我的数据库有一个表跟踪部门和用户ID。这里的结论是,尽管department和user_id列可以有重复,但它们的组合不能。这就是说,双主键设计
DepartmentA 0001
DepartmentA 0002
DepartmentB 0001
DepartmentB 0002
是我的表中的有效数据。但
DepartmentA 0001
DepartmentA 0001
是不有效。
部门和user_id的组合形成记录的唯一标识符。在另一个表中,我需要使用这个唯一的标识符来跟踪用户的活动,比如他们进入建筑物的时间,他们离开建筑物的时间等。
我在想的是我创建了下列表格
CREATE TABLE user (
user_id INT(4),
department VARCHAR(25) NOT NULL ,
combined_id int(4) ,
UNIQUE (combined_id) ,
Primary key(user_id, department)
);
CREATE TABLE user_activity(
combined_id int(4),
activity varchar(25),
Foreign Key (combined_id) references user(combined_id)
);
所以我想为我的目的使用双主键。这是恕我直言,是保证数据完整性的最佳方式。但是根据我所知,使用双主键可能很难与ORM一起使用,即它们不完全支持,并且必须为其编写定制查询。
鉴于我的情况,上述设计是否最好?
什么是平台? – 2009-02-03 11:59:27
其中ORM?这比数据库更有可能重要。 – 2009-02-03 12:02:55
Propel和ADO.Net实体框架 – Graviton 2009-02-03 12:05:24