The final database state must be correct
(as if transactions ran one-by-one in some order)
This is final-state / serial correctness.
But reality
So the DB must:
Prevent bad schedules from forming on the fly , instead of detecting them later(as that would be costly and also some side effects may have happened in app logic based on received states)
final state serializabilty can happen wiuthout enforcing conflict serializability but conflict ser enfocrces final state ser
even cyclic can be conflict serializable but acyclic enforces conflict ser
A️⃣ Lock-based (2PL family)
“If two operations would conflict, don’t let them overlap.”