Mysql 数据模型问题:如何限定第三个对象
我处理的是稍微不同的类型,因此为了明确我想要实现的目标,我决定使用隐喻 假设您需要创建表来描述两个建筑局的项目: 第一只处理3D平面图 第二只处理二维草图 我有下表Mysql 数据模型问题:如何限定第三个对象,mysql,sql,model,Mysql,Sql,Model,我处理的是稍微不同的类型,因此为了明确我想要实现的目标,我决定使用隐喻 假设您需要创建表来描述两个建筑局的项目: 第一只处理3D平面图 第二只处理二维草图 我有下表 mysql> describe sketch; +------------------+-------------------------------+------+-----+-------------------+ | Field | Type | N
mysql> describe sketch;
+------------------+-------------------------------+------+-----+-------------------+
| Field | Type | Null | Key | Default |
+------------------+-------------------------------+------+-----+-------------------+
| project_id | binary(16) | NO | PRI | NULL |
| company_id | binary(16) | NO | PRI | NULL |
| type | enum('2D','3D','N/A') | YES | |'N/A' |
+------------------+-------------------------------+------+-----+-------------------+
如您所见,项目id和公司id构成主键
当在某些特殊情况下,同一公司在同一项目ID下承担2D和3D任务时,会出现此问题
或者,同一家公司开始处理两个或多个相同类型的子项目(例如,两个都是二维草图),但都在我们称之为具有完全相同ID的父项目的范围内
一个快速而肮脏的修复方法是简单地将唯一ID添加到上表中,但它对我不起作用,因为有各种报告和其他函数基本上都是这样做的:从草图中选择blah,其中project_ID=XXX和company_ID
我可以添加代码来过滤来自上述SQL的结果,但我不能真正更改结构或表
你知道我有什么选择吗
感谢你的任何想法
在此之前非常感谢 正如您所描述的问题,公司/项目不是主键。您描述了违反唯一性的情况
那么公司/项目/类型似乎确实是唯一的键和候选主键。我想说的是,您应该有一个数字主键,并将三方键声明为唯一的。正如您所描述的问题,公司/项目不是主键。您描述了违反唯一性的情况
那么公司/项目/类型似乎确实是唯一的键和候选主键。我想说你们应该有一个数字主键,并声明三方键是唯一的。在我看来,草图的维度独立于它所属的公司和项目。在我看来,草图的维度独立于它所属的公司和项目。