In this ADR, we document the database design decisions related to the onDelete
logic for relationships between key entities within the system.
-
Dish - Vendor Relationship:
onDelete: "CASCADE"
- Ensures that when a
Vendor
is deleted, associatedDishes
are also deleted, maintaining data consistency.
-
Order - User Relationship:
onDelete: "RESTRICT"
- Restricts deletion of a
User
if associatedOrders
exist, preventing accidental removal of user data.
-
Order - OrderStatus Relationship:
onDelete: "CASCADE"
- Cascades deletion of associated
Orders
when anOrderStatus
is deleted, ensuring that orders are removed when their status is no longer valid.
-
OrderDish - Rating Relationship:
onDelete: "RESTRICT"
- Restricts deletion of a
Rating
if associatedOrderDishes
exist, maintaining data integrity for order ratings.
-
User - Order Relationship:
onDelete: "RESTRICT"
- Restricts deletion of a
User
if associatedOrders
exist, avoiding orphaned order records.
-
OrderDish - Dish Relationship:
onDelete: "CASCADE"
- Cascades deletion of associated
OrderDishes
when aDish
is deleted, ensuring consistency in order dish records.
-
Role - RolePrivilege Relationship:
onDelete: "CASCADE"
- Cascades deletion of associated
RolePrivileges
when aRole
is deleted, aligning with the role's lifecycle.
-
Rating - OrderDish Relationship:
onDelete: "RESTRICT"
- Restricts deletion of a
Rating
if associatedOrderDishes
exist, preventing loss of rating data.
-
Role - User Relationship:
onDelete: "RESTRICT"
- Restricts deletion of a
Role
if associatedUsers
exist, maintaining user-role relationships.
-
User - VendorUser Relationship:
onDelete: "RESTRICT"
- Restricts deletion of a
User
if associatedVendorUsers
exist, preventing removal of vendor-user relationships.
-
Vendor - Dish Relationship:
onDelete: "CASCADE"
- Cascades deletion of associated
Dishes
when aVendor
is deleted, ensuring consistency in vendor-dish relationships.
-
Vendor - VendorUser Relationship:
onDelete: "CASCADE"
- Cascades deletion of associated
VendorUser
when aVendor
is deleted, maintaining the integrity of vendor-user relationships.
- Ensures data integrity by preventing or appropriately cascading deletions based on entity relationships.
- Supports the expected behavior of the application and aligns with common database design practices.
- Allows for efficient management of entities, avoiding unintended data inconsistencies.
Considering the evolving nature of the project and a focus on deliverable features, audit-related rules, particularly those involving user record deletion, may be subject to change. Future iterations may introduce modifications to these rules as project requirements and priorities evolve. Further consideration and evaluation are planned for a later date.