Maison >base de données >tutoriel mysql >Comment garantir l'intégrité référentielle entre les types de base et les sous-types exclusifs dans les bases de données relationnelles ?

Comment garantir l'intégrité référentielle entre les types de base et les sous-types exclusifs dans les bases de données relationnelles ?

DDD
DDDoriginal
2025-01-03 15:42:39571parcourir

How to Ensure Referential Integrity Between Base Types and Exclusive Subtypes in Relational Databases?

Comment implémenter l'intégrité référentielle dans les sous-types

Introduction

Dans la modélisation de bases de données relationnelles, un sous-type représente une spécialisation d'un type de base. La mise en œuvre de l'intégrité référentielle entre les types de base et les sous-types garantit que les données de ces tableaux restent cohérentes et exactes.

Sous-types exclusifs

Avec les sous-types exclusifs, un type de base ne peut avoir qu'une seule ligne de sous-type. Pour appliquer cette contrainte :

  1. Créez une colonne discriminatrice : Ajoutez une colonne au type de base pour identifier le sous-type.
  2. Implémentez une CONTRAINTE CHECK : Utilisez un CHECK CONSTRAINT dans la table des sous-types pour vous assurer que la ligne du type de base existe et possède le bon discriminateur valeur.
CREATE TABLE BaseTable (
  BaseTypeId INT PRIMARY KEY,
  Discriminator CHAR(1) CHECK (Discriminator IN ('B', 'C', 'D'))
);

CREATE TABLE SubtypeTable (
  SubtypeTypeId INT PRIMARY KEY,
  FOREIGN KEY (BaseTypeId) REFERENCES BaseTable(BaseTypeId),
  CHECK (
    EXISTS (
      SELECT 1 
      FROM BaseTable 
      WHERE BaseTypeId = SubtypeTable.BaseTypeId 
        AND Discriminator = 'B'
    )
  )

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn