有很多关于mam的信息,但我找不到任何具体的信息来帮助我理解那些存在三元关系(3之间)的复杂表;我知道对于这些情况,必须创建一个中间表,类似于三人组的子表。
该表应从其母亲那里继承主字段并将这些主字段转换为“复合主字段” (如果我错了,请帮助我定义定义,我对这个主题不太清楚,这就是我问这个问题的原因)如果是这样,让我们看看下面的例子(不完整):
CREATE TABLE `taller_bdphp`.`t3_asignacion` (
`idst3` INT(7) NOT NULL AUTO_INCREMENT , /*este seria el id para
identificar el registro, ejemplo: Registro numero: 203*/
`placa` VARCHAR(10) NOT NULL , /*esto seria una FK y a
su vez una PK de la tabla vehiculos*/
`cedula_p` INT(8) NOT NULL , /*esto seria una FK y a
su vez una PK de la tabla personal,
sirve para indicar el mecánico que esta trabajando con el vehiculo y que servicio le realiza a su vez*/
`idservicio` INT(3) NOT NULL , /*esto seria un FK y asu vez una PK de la tabla servicios,
(existen determinados servicios, por ejemplo: Revision, Mantenimiento, Lavado.
y se le debe poder asignar uno o mas servicios al vehiculo.*/
`fecha_iniciot3` DATE NOT NULL , /*esto seria un campo propio de la tabla ternaria,
indica la fecha en que se inicia el servicio asignado*/
`fecha_fint3` DATE NULL , /* otro campo que puede estar nulo,
indica la fecha que se termina el servicio (cuando el vehiculo se va)*/
`Estadot3` VARCHAR(1000) NULL , /*otro campo simple para escribir o comentar sobre el estado del servicio*/
PRIMARY KEY (`idst3`)) ENGINE = InnoDB;
(我已经厌倦了,呵呵......)我希望你能更好地理解它......如果你理解表格...... FK 不完整并且“复合主键”的声明没有完成。 ..这是我的问题:你是怎么做到的?
- 是否必须重新放置或声明外国字段?是否需要重复它们?在这里我不知道,因为由于它们也是主要的,我不知道在这种情况下如何考虑它们......
- 另一方面,在那之后,如何声明“COMPOSITE PRIMARY KEY”?PRIMARY KEY (
idst3
,placa
,cedula_p
,idservicio
)) <<<那是正确的方法吗? - 最后,如何声明外键,如果它们与往常一样使用相同的方法一一保持相同?那么我使用的方法是:
FOREIGN KEY(placa) REFERENCES vehiculos(placa),
这种方法正确吗?尽管有些人在它上面放置了一个我从来不知道它的用途的约束,因为即使它没有放置它仍然有效,也有些人添加了
ON DELETE CASDADE ON UPDATE CASCADE,
(更新“级联”中的表[如果一个被修改,其他的被修改])¿在phpmyadmin中,那些将是外来的和部分主要化合物作为索引放置。然后您必须选择创建一个索引单列或创建复合索引??!
参考来源:https ://www.genbetadev.com/bases-de-datos/bases-de-datos-y-relaciones-ternarias
嗨,我不知道这是否清楚,当您创建由三元关系产生的表时,主键及其外键将声明如下:
如果在建表的时候加外键,不一定要加保留字
Constraint
(或者限制),但是我们在建表后加外键引用的时候是必须的(可以声明表和复合主键,当时不需要指出这三个字段是外键)。我希望这已经澄清了一些事情。关于何时建立 n:m:k 关系,我们可以假设对于核电厂的能源管理,我们有一个实体Central Nuclear
、一个实体Proveedor
(工厂的一些铀供应商)和一个实体Transportista
(任何一个进行运输的卡车司机)。如果我们想知道铀供应是谁
Proveedor
,它Transportista
携带什么以及Central Nuclear
它被运输到什么地方,以及例如它正在运输的材料数量,收集它的唯一方法是通过三元关系. (可能有更清晰的例子,这是我更好理解的例子)。