In PostGIS, there are two concepts: simplicity and validity. For most spatial analyses to succeed, input geometries have to be both simple and valid. Here are some rules:
- A point must always be simple and valid
- A MultiPoint must always be valid, and simple when there are no repeated points with identical coordinates
- A LineString or MultiLineString must always be valid, and is simple if the line:
-
- Does not have repeated points (with the exception of closed rings, whose first and last point are identical)
- Does not self-intersect

Example of a non-simple line: self-intersecting autogenerated contours.
A polygon is always simple, and is valid if:
- All interior rings (if any) are properly contained within the exterior ring
- No rings cross
- The exterior ring doesn't have any spikes (bayonets)

An example of an invalid polygon: self-intersecting ring.
A MultiPolygon is valid when all parts are valid and the exterior rings of all parts do not intersect.