欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql一張表對應(yīng)多表

劉柏宏2年前8瀏覽0評論

在數(shù)據(jù)庫設(shè)計(jì)中,經(jīng)常會遇到一張表需要與多張表進(jìn)行關(guān)聯(lián)的情況。MySQL提供了多種方式來實(shí)現(xiàn)這個需求。

CREATE TABLE `users` (
`user_id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL,
`password` VARCHAR(50) NOT NULL,
`email` VARCHAR(100) NOT NULL,
PRIMARY KEY (`user_id`)
);
CREATE TABLE `orders` (
`order_id` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` INT(11) NOT NULL,
`product_name` VARCHAR(50) NOT NULL,
`quantity` INT(11) NOT NULL,
PRIMARY KEY (`order_id`),
FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`)
);
CREATE TABLE `payments` (
`payment_id` INT(11) NOT NULL AUTO_INCREMENT,
`order_id` INT(11) NOT NULL,
`amount` DECIMAL(10, 2) NOT NULL,
PRIMARY KEY (`payment_id`),
FOREIGN KEY (`order_id`) REFERENCES `orders` (`order_id`)
);

以上是一個簡單的例子,包含了三個表:users、orders、payments。orders表和payments表都通過外鍵關(guān)聯(lián)到users表。

另外一種實(shí)現(xiàn)方式是使用聯(lián)結(jié)表(junction table)。聯(lián)結(jié)表通常用于實(shí)現(xiàn)多對多的關(guān)系,其設(shè)計(jì)和用法也很簡單。例如:

CREATE TABLE `students` (
`student_id` INT(11) NOT NULL AUTO_INCREMENT,
`student_name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`student_id`)
);
CREATE TABLE `courses` (
`course_id` INT(11) NOT NULL AUTO_INCREMENT,
`course_name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`course_id`)
);
CREATE TABLE `enrollments` (
`enrollment_id` INT(11) NOT NULL AUTO_INCREMENT,
`student_id` INT(11) NOT NULL,
`course_id` INT(11) NOT NULL,
PRIMARY KEY (`enrollment_id`),
FOREIGN KEY (`student_id`) REFERENCES `students` (`student_id`),
FOREIGN KEY (`course_id`) REFERENCES `courses` (`course_id`)
);

enrollments表就是聯(lián)結(jié)表,用來關(guān)聯(lián)students表和courses表。可以通過enrollments表查詢每個學(xué)生選修的課程,或者查詢每個課程里有哪些學(xué)生參加。