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

Thiết kế cơ sở dữ liệu, các mục trong danh mục, danh mục phụ &chủ đề

Hãy để cho bạn biết ý tưởng IMHO nào mà tôi nghĩ là tốt để sử dụng:trước tiên hãy tạo bảng danh mục:

CREATE TABLE `category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `category_father_id` int(11) DEFAULT '0',
  `is_active` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`),
  KEY `category_father_id` (`category_father_id`),
  CONSTRAINT `constraint_name` FOREIGN KEY (`category_father_id`) REFERENCES `category` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;

thì đối với bảng sản phẩm của bạn, bạn có thể giữ nguyên nó như sau:

CREATE TABLE Product (ProductID int, Description nvarchar(100));

Bây giờ Thông thường, bạn có thể có Sản phẩm thuộc một số danh mục. Do đó, cách đúng để làm điều đó là có mối quan hệ m:n giữa Sản phẩm và Danh mục. và nó có thể được thực hiện bằng cách thêm:

create table product_category(
ProductId int(11) not null,
CategoryId int(11) not null,
unique (ProductId,CategoryId),
foreign key (ProductId) references Product (ProductID) on update cascade on delete cascade,
foreign key (CategoryId) references category (id) on update cascade on delete cascade
)engine=innodb;

và bạn có thể giữ nguyên chủ đề.

bạn sẽ thấy category đó bảng có thể xử lý các danh mục lồng nhau bằng cách sử dụng category_father_id khóa ngoài của chính nó.

Nhưng một lưu ý cần ghi nhớ là, xét cho cùng, nó luôn là về miền / logic kinh doanh 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ạy nhiều truy vấn trong MySQL mà không sử dụng truy vấn phụ

  2. Các câu lệnh chuẩn bị sẵn trong PHP ... Biến ràng buộc dưới dạng phạm vi số trong REGEXP?

  3. MySQL:Làm cách nào để hiển thị các danh mục đơn giản cho việc này?

  4. Làm thế nào để bỏ qua dữ liệu trống trong MySQL?

  5. Làm thế nào để thêm cột bằng cách sử dụng thay đổi trong mysql?