首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL表设计-引用多个外部行

MySQL表设计-引用多个外部行
EN

Stack Overflow用户
提问于 2013-07-23 15:30:55
回答 1查看 123关注 0票数 1

最小背景(即赤裸裸的伪码细节)

我正在为我的农场制作一个php/mysql应用程序的记录保存(除其他外)。有很多种类的动物等,可以有图片(或其他记录-视频等)。但为了简单起见,我只会提到每一种(山羊和图片)。所以说

表格大致如下:

代码语言:javascript
复制
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)

所以问题是:

  • 很明显,一张照片中可能有多只山羊,所以我不能只在图片中有一个外键来指山羊。
  • 这里有不止一张牲畜桌,这也是一个糟糕的选择,但现在并不担心。
  • 基本上到目前为止还没有应用优化(即没有设置长度,而是使用文本而不是varchar(长度))等等;直到我填充了一堆,并确切地了解了我想要的所有内容,我才会担心这一点。

所以问题是:是什么best_方法将图片链接到多只山羊(在A方面)最佳性能B)最佳代码符合标准。我想我得多做一张桌子:

代码语言:javascript
复制
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,但我并不担心这一点,只是担心引用两个表的额外表是否是最好的方法。

谢谢;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-29 15:50:00

在讨论中,我改变了最初的想法,使用复合主键:

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17814587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档