Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Dòng INNODB khi xóa và cập nhật

Bạn dường như muốn chỉ một chút hướng dẫn. Vì vậy, tôi sẽ cố gắng ngắn gọn.

$sql = "CREATE TABLE customerGroups (
   customer_id int(11) NOT NULL,
   group_id int(11) NOT NULL,
   PRIMARY KEY (customer_id, group_id),
   CONSTRAINT customers_customergroups_fk
     FOREIGN KEY (customer_id)
     REFERENCES customers (customer_id) 
     ON DELETE CASCADE,
   CONSTRAINT groups_customergroups_fk
     FOREIGN KEY (group_id)
     REFERENCES groups (group_id) 
     ON DELETE CASCADE
)ENGINE = INNODB;";

Bạn chỉ cần số id khi danh tính khó xác định. Khi bạn giao tiếp với mọi người, danh tính rất khó xác định. Có rất nhiều người tên là "John Smith".

Nhưng bạn đang giải quyết hai điều đã được xác định. (Và được xác định bằng số id, của tất cả mọi thứ.)

Việc xóa xếp tầng có ý nghĩa. Tương đối hiếm khi cập nhật thông tin về số id; chúng được cho là sẽ không bao giờ thay đổi. (Lý do chính khiến Oracle DBA nhấn mạnh rằng khóa chính phải luôn luôn là số ID và chúng không bao giờ được thay đổi là do Oracle không thể cập nhật theo tầng.) Nếu sau này, một số số id cần để thay đổi vì bất kỳ lý do gì, bạn có thể thay đổi bảng để bao gồm BẬT CẬP NHẬT CASCADE.

$sql = "CREATE TABLE groups
(
group_id int(11) NOT NULL AUTO_INCREMENT,
group_title varchar(50) NOT NULL UNIQUE,
group_desc varchar(140),
PRIMARY KEY (group_id)
)ENGINE = INNODB;";

Lưu ý ràng buộc duy nhất bổ sung trên group_title. Bạn không muốn cho phép bất kỳ thứ gì như thế này (bên dưới) trong cơ sở dữ liệu của mình.

group_id  group_title
--
1         First group
2         First group
3         First group
...
9384      First group

Bạn sẽ muốn thực hiện các loại thay đổi đó qua tất cả các bảng của mình. (Có lẽ ngoại trừ bảng khách hàng của bạn.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ định loại bảng / công cụ lưu trữ trong Doctrine 2

  2. Di chuyển Laravel:khóa duy nhất quá dài, ngay cả khi được chỉ định

  3. Chọn từ một bảng có các trường không khớp với điều kiện

  4. MySQL chỉ nhận được ROLLUP tổng thể

  5. Trình kết nối / C ++ Mã lỗi MySQL:2014, SQLState:HY000 và Các lệnh không đồng bộ hóa lỗi tại sao?