De acuerdo con la definición, un (/ tabla de enlace mesa de bridge) Junction Table se utiliza para las relaciones de muchos a muchos, cuando se usa de esta manera:¿Se puede usar también una tabla de unión (tabla de unión) para una relación de uno a varios?
CREATE TABLE Users
(
UserLogin varchar(50) PRIMARY KEY,
UserPassword varchar(50) NOT NULL,
UserName varchar(50) NOT NULL
)
CREATE TABLE Permissions
(
PermissionKey varchar(50) PRIMARY KEY,
PermissionDescription varchar(500) NOT NULL
)
--This is the junction table.
CREATE TABLE UserPermissions
(
UserLogin varchar(50) REFERENCES Users (UserLogin),
PermissionKey varchar(50) REFERENCES Permissions (PermissionKey),
PRIMARY KEY (UserLogin, PermissionKey)
)
Pero ¿no podría también usarse con la misma facilidad para un uno-a-muchos, como en este ejemplo en el que un usuario está asociado con muchos órdenes:
(que no entiendo bien las bases de datos así que por favor me corrigen si he entendido algo .)
CREATE TABLE Users
(
UserLogin varchar(50) PRIMARY KEY,
UserPassword varchar(50) NOT NULL,
UserName varchar(50) NOT NULL
)
CREATE TABLE Orders
(
OrderKey varchar(50) PRIMARY KEY,
OrderDescription varchar(500) NOT NULL
)
--This is the junction table.
CREATE TABLE UserOrders
(
UserLogin varchar(50) REFERENCES Users (UserLogin),
OrderKey varchar(50) REFERENCES Orders (OrderKey),
PRIMARY KEY (UserLogin, OrderKey)
)
¿Estás diciendo que esto es malo? –
A veces puede ser útil si quiere tener la misma estructura de tablas de db, pero decide el tipo de relación en la aplicación: de uno a muchos o de muchos a muchos. (como un parámetro) Hay momentos en los que desarrolla una relación de uno a muchos sabiendo que es muy probable que cambie a varios. –
Ya veo. Y si desea aplicar uno-a-muchos o muchos-a-muchos en la base de datos, ¿en su lugar utiliza algún tipo de restricción? –