Bonsoir Ordigil,
A propos des transmissions.
Envoyé par
ordigil
Pour les transmissions, le model détermine le nombre de vitesses et le torque EX :une transmission Eaton Fuller RTLO-16D713A : 16 X 100 = 1600 LBS torque, 13 = 13 vitesses.
Le diagramme correspondant est le suivant :
Et je ne résiste pas à l’envie de créer la table qui en découle pour les modèles de transmission :
CREATE TABLE COMPONENT_MODEL_TRANSMISSION
(
ComponentManufacturerId INT NOT NULL
, ComponentModelId INT NOT NULL
, TransmissionTorque INT NOT NULL
, TransmissionSpeed INT NOT NULL
, TransmissionType VARCHAR(16) NOT NULL DEFAULT 'Primary'
, CONSTRAINT COMPONENT_MODEL_TRANSMISSION_PK PRIMARY KEY (ComponentManufacturerId, ComponentModelId)
, CONSTRAINT COMPONENT_MODEL_TRANSMISSION_FK FOREIGN KEY (ComponentManufacturerId, ComponentModelId)
REFERENCES COMPONENT_MODEL (ComponentManufacturerId, ComponentModelId)
ON DELETE CASCADE
, CONSTRAINT COMPONENT_MODEL_TRANSMISSION_TYPE_CHK CHECK (LOWER(TransmissionType) IN ('primary', 'auxiliary'))
)
;
Dans cette table, on définit aussi le type de transmission : primaire ou auxiliaire.
Par voie de conséquence, la table TRANSMISSION est réduite à (bonne chose !) :
CREATE TABLE TRANSMISSION
(
ComposantId INT NOT NULL
, TransmissionNumeroSerie VARCHAR(25) NOT NULL
, CONSTRAINT TRANSMISSION_PK PRIMARY KEY (ComposantId)
, CONSTRAINT TRANSMISSION_AK UNIQUE (TransmissionNumeroSerie)
, CONSTRAINT TRANSMISSION_COMPOSANT_FK FOREIGN KEY (ComposantId)
REFERENCES COMPOSANT (ComposantId) ON DELETE CASCADE
)
;
Et la vue TRANSMISSION_COMPOSANT_V :
CREATE VIEW TRANSMISSION_COMPOSANT_V (SerialNumber, MfgDate, PurchaseDate, SaleDate
, Manufacturer, Model
, TransmissionTorque
, TransmissionSpeed
, TransmissionType)
AS
SELECT TransmissionNumeroSerie
, ComposantDateMfg, ComposantDateAchat, ComposantDateVente
, ContactName, ComponentModelName
, TransmissionTorque
, TransmissionSpeed
, TransmissionType
FROM COMPOSANT AS x JOIN TRANSMISSION AS y ON x.ComposantId = y.ComposantId
JOIN COMPONENT_MODEL AS z ON x.ComponentManufacturerId = z.ComponentManufacturerId
AND x.ComponentModelId = z.ComponentModelId
JOIN CONTACT AS t ON x.ComponentManufacturerId = t.ContactId
JOIN COMPONENT_MODEL_TRANSMISSION AS u ON x.ComponentManufacturerId = u.ComponentManufacturerId
AND x.ComponentModelId = u.ComponentModelId
;
La structure de la vue est la même qu’avant, à ceci près qu’on a ajouté la colonne TransmissionTorque et que les colonnes TransmissionTorque, TransmissionSpeed et TransmissionType n’y sont pas modifiables puisqu’elles référencent les colonnes correspondantes de COMPONENT_MODEL_TRANSMISSION.
Votre avis ? Et celui du Capitaine s'il est là ;-)
Partager