sql >> データベース >  >> RDS >> Mysql

データベース設計、カテゴリ内のアイテム、サブカテゴリおよびテーマ

    どのIMHOを使用するのが良いと思うかをお見せしましょう。最初にカテゴリテーブルを作成します:

    CREATE TABLE `category` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(100) NOT NULL,
      `category_father_id` int(11) DEFAULT '0',
      `is_active` tinyint(1) NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `name` (`name`),
      KEY `category_father_id` (`category_father_id`),
      CONSTRAINT `constraint_name` FOREIGN KEY (`category_father_id`) REFERENCES `category` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB;
    

    次に、製品テーブルをそのままにしておくことができます:

    CREATE TABLE Product (ProductID int, Description nvarchar(100));
    

    これで通常、いくつかのカテゴリに属する​​製品を持つことができます。したがって、それを行う正しい方法は、製品とカテゴリの間にm:nの関係を持たせることです。次を追加することで実行できます:

    create table product_category(
    ProductId int(11) not null,
    CategoryId int(11) not null,
    unique (ProductId,CategoryId),
    foreign key (ProductId) references Product (ProductID) on update cascade on delete cascade,
    foreign key (CategoryId) references category (id) on update cascade on delete cascade
    )engine=innodb;
    

    テーマをそのままにしておくことができます。

    そのcategoryが表示されます テーブルは、category_father_idを使用してネストカテゴリを処理できます 自分自身の外部キー。

    ただし、覚えておくべき注意点は、結局のところ、それは常にドメイン/ビジネスロジックに関するものです。




    1. プロシージャ内で別のPL/SQLプロシージャを呼び出す

    2. MYSQLでテーブルを作成するときにデフォルトの日付形式を変更する方法

    3. ループ暗黙カーソルのPL/SQL

    4. phpでutf-8データを取得し、excelsheet dbダンプに正しいエンコーディングを表示する方法は?