为了解释我的问题,我举一个简单的例子:
我的数据库有三个表:
[positions] - position_id INT - position VARCHAR [employees] - employee_id INT - position_id INT - FK - name VARCHAR - birth_date DATE [vehicles] - vehicle_id INT - model VARCHAR - year VARCHAR - color VARCHAR
问题是我必须将一辆车与公司中职位为“司机”的一名员工相关联,并且仅在这种情况下。
我尝试使用继承并创建另一个名为“Driver”的表,该表具有与一名员工关联的外键(1-1 关系),但我无法使其工作,因为在编程阶段我必须手动验证如果所选位置 ID(在 HTML select 元素中)是“Driver”的 ID。我认为这不是一个好的编程习惯。
最后,我想知道是否有其他方法可以在不影响关系数据库或编程的情况下执行此操作。
提前致谢! 抱歉英语不好,这不是我的主要语言。 希望您能理解。
最佳答案
这是一条业务规则:“只有职位 = 驾驶的员工才能与车辆相关联”。业务规则通常在编程中实现,这不是一个坏习惯。编程是为了编写业务逻辑。通常,在开发任何应用程序时,您会得到大量无法在数据库级别实现的此类实例。
但是,如果您仍然想在数据库级别控制它,那么您可以使用触发器并在插入/更新级别检查此验证。
关于database - 关系数据库建模的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3115525/