最小背景(即赤裸裸的伪码细节)
我正在为我的农场制作一个php/mysql应用程序的记录保存(除其他外)。有很多种类的动物等,可以有图片(或其他记录-视频等)。但为了简单起见,我只会提到每一种(山羊和图片)。所以说
表格大致如下:
CREATE TABLE BMD_farmrecords_goats (
goat_id INT NOT NULL AUTO_INCREMENT,
goat_name TEXT,
...more columns but whatever, unimportant...
primary_key(goat_id))
CREATE TABLE BMD_farmrecords_pictures (
media_id INT NOT NULL AUTO_INCREMENT,
media_name TEXT,
media_description TEXT,
media_description_short TEXT,
media_date_upload DATE,
media_date_taken DATE,
media_uploader INT, //foreign key constrained to user table but unimportant for question
media_type ENUM('jpg','gif','png'),
media_hidden BOOL,
media_category INT, //foreign key constrained to category table but unimportant for question
PRIMARY KEY (media_id)所以问题是:
所以问题是:是什么best_方法将图片链接到多只山羊(在A方面)最佳性能B)最佳代码符合标准。我想我得多做一张桌子:
create TABLE BMD_farmrecords_goatpictures (
id INT NOT NULL AUTO_INCREMENT
picture_id INT //foreign key to BMD_farmrecords_pictures->media_id
goat_id INT//foreign key to BMD_farmrecords_goats->goat_id有什么更好的方法吗?
当然,使用这种方法,我可能不得不将*_goats表更改为父*_animals表,然后使用类型字段并引用animal_id,但我并不担心这一点,只是担心引用两个表的额外表是否是最好的方法。
谢谢;
发布于 2013-07-29 15:50:00
在讨论中,我改变了最初的想法,使用复合主键:
create TABLE BMD_farmrecords_goatpictures (
picture_id INT //foreign key to BMD_farmrecords_pictures->media_id
goat_id INT//foreign key to BMD_farmrecords_goats->goat_id
PRIMARY KEY (picture_id, goat_id))https://stackoverflow.com/questions/17814587
复制相似问题