hi there,

I am a casual database tinkerer that has to build a new database.
so please do not fall down laughing if I ask stupid questions ..

the problem at hand is that I want to create tables with the following structure:

- suppliers
 they produce/deal-with 0 to n products
- products
 a product is produced/sold by 1-n suppliers
 it can have 0-1 declaration
- declarations
 these are product specsheets

my questions are now:
what indices and actions do I have to create to link these tables ?
in the following script created by by MySQL-workbench. there is the
table tblProducts_has_tblSupplier which is linked to both tblSupplier and
tblProducts by foreign keys.
How do I guaranty integrity when deleting a product or supplier??
do i have to do that using triggers?

thanks for your insigth
robert


SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `energie` ;
USE `energie`;

-- -----------------------------------------------------
-- Table `energie`.`tblProducts`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `energie`.`tblProducts` ;

CREATE  TABLE IF NOT EXISTS `energie`.`tblProducts` (
 `idtblProducts` INT(11) NOT NULL AUTO_INCREMENT ,
 `name` VARCHAR(45) NOT NULL ,
 `simplesystem` TINYINT(4) NULL DEFAULT 0 ,
 `kompaktenergiezentrale` TINYINT(4) NULL DEFAULT 0 ,
 `device_with_humidity_recovery` TINYINT(4) NULL DEFAULT 0 ,
 `room_ventilator` TINYINT(4) NULL DEFAULT 0 ,
 `comfort_regulation` TINYINT(4) NULL DEFAULT 0 ,
 `heat_pump` TINYINT(4) NULL DEFAULT 0 ,
 `outlet` TINYINT(4) NULL DEFAULT 0 ,
 `air_dispersing_system` TINYINT(4) NULL DEFAULT 0 ,
 `heat_exchanger` TINYINT(4) NULL DEFAULT 0 ,
 `heat_recovery` TINYINT(4) NULL DEFAULT 0 ,
 `humidity_recovery` TINYINT(4) NULL DEFAULT 0 ,
 `sound_suppressor` TINYINT(4) NULL DEFAULT 0 ,
 `pollen_filter` TINYINT(4) NULL DEFAULT 0 ,
 `groundsregister` TINYINT(4) NULL DEFAULT 0 ,
 `single_room` TINYINT(4) NULL DEFAULT 0 ,
 `one_family_house` TINYINT(4) NULL DEFAULT 0 ,
 `multi_family_house` TINYINT(4) NULL DEFAULT 0 ,
 PRIMARY KEY (`idtblProducts`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;


-- -----------------------------------------------------
-- Table `energie`.`tblDeclaration_vent`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `energie`.`tblDeclaration_vent` ;

CREATE  TABLE IF NOT EXISTS `energie`.`tblDeclaration_vent` (
 `idtblDeclaration_vent` INT NOT NULL AUTO_INCREMENT ,
 `manufacturer` VARCHAR(45) NOT NULL ,
 `name` VARCHAR(45) NOT NULL ,
 `flowrate` INT NULL DEFAULT 0 ,
 `humidity_recovery` INT NULL DEFAULT 1 ,
 `energy_class` VARCHAR(1) NOT NULL ,
 `energy_class_value` VARCHAR(10) NOT NULL ,
 `hygiene_class` VARCHAR(1) NOT NULL ,
 `noise_class` VARCHAR(1) NOT NULL ,
 `audited_by` VARCHAR(45) NULL DEFAULT '' ,
 `audited_date` DATE NULL DEFAULT NULL ,
 `autition_report` VARCHAR(45) NULL DEFAULT '0-0-0' ,
 `picture_name` VARCHAR(45) NULL DEFAULT '' ,
 `remarks` TEXT NULL DEFAULT NULL ,
 `reindex` BOOLEAN NULL DEFAULT 1 ,
 `tblProducts_idtblProducts` INT(11) NULL ,
 PRIMARY KEY (`idtblDeclaration_vent`) ,
 CONSTRAINT `fk_tblDeclaration_vent_tblProducts`
   FOREIGN KEY (`tblProducts_idtblProducts` )
   REFERENCES `energie`.`tblProducts` (`idtblProducts` )
   ON DELETE NO ACTION
   ON UPDATE NO ACTION)
ENGINE = InnoDB
COMMENT = 'table with declaration data for ventilation'
PACK_KEYS = 1;

CREATE INDEX imanufacturer ON `energie`.`tblDeclaration_vent` (`manufacturer` ASC) ;

CREATE INDEX ienergy_class ON `energie`.`tblDeclaration_vent` (`energy_class` ASC) ;

CREATE INDEX ihygiene_class ON `energie`.`tblDeclaration_vent` (`hygiene_class` ASC) ;

CREATE INDEX inoise_class ON `energie`.`tblDeclaration_vent` (`noise_class` ASC) ;

CREATE UNIQUE INDEX imanufaturer_name ON `energie`.`tblDeclaration_vent` (`manufacturer` ASC, `name` ASC) ;

CREATE INDEX iname ON `energie`.`tblDeclaration_vent` (`name` ASC) ;

CREATE INDEX fk_tblDeclaration_vent_tblProducts ON `energie`.`tblDeclaration_vent` (`tblProducts_idtblProducts` ASC) ;


-- -----------------------------------------------------
-- Table `energie`.`tblSupplier`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `energie`.`tblSupplier` ;

CREATE  TABLE IF NOT EXISTS `energie`.`tblSupplier` (
 `idtblSupplier` INT(11) NOT NULL AUTO_INCREMENT ,
 `name` VARCHAR(45) NOT NULL ,
 `extraname` VARCHAR(45) NOT NULL ,
 `description` VARCHAR(45) NOT NULL ,
 `address` VARCHAR(45) NOT NULL ,
 `extraaddress` VARCHAR(45) NOT NULL ,
 `zip` INT(20) NOT NULL ,
 `city` VARCHAR(45) NOT NULL ,
 `pob` INT(20) NOT NULL ,
 `country` VARCHAR(45) NOT NULL ,
 `language` VARCHAR(45) NOT NULL ,
 `email` VARCHAR(45) NOT NULL ,
 `url` VARCHAR(60) NOT NULL ,
 `phone` VARCHAR(45) NOT NULL ,
 `fax` VARCHAR(45) NOT NULL ,
 `responsibleperson` VARCHAR(45) NOT NULL ,
 `companylogo` VARCHAR(45) NOT NULL ,
 PRIMARY KEY (`idtblSupplier`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;


-- -----------------------------------------------------
-- Table `energie`.`tblProducts_has_tblSupplier`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `energie`.`tblProducts_has_tblSupplier` ;

CREATE  TABLE IF NOT EXISTS `energie`.`tblProducts_has_tblSupplier` (
 `tblProducts_idtblProducts` INT(11) NOT NULL ,
 `tblSupplier_idtblSupplier` INT(11) NOT NULL ,
 PRIMARY KEY (`tblProducts_idtblProducts`, `tblSupplier_idtblSupplier`) ,
 CONSTRAINT `fk_tblProducts_has_tblSupplier_tblProducts`
   FOREIGN KEY (`tblProducts_idtblProducts` )
   REFERENCES `energie`.`tblProducts` (`idtblProducts` )
   ON DELETE NO ACTION
   ON UPDATE NO ACTION,
 CONSTRAINT `fk_tblProducts_has_tblSupplier_tblSupplier`
   FOREIGN KEY (`tblSupplier_idtblSupplier` )
   REFERENCES `energie`.`tblSupplier` (`idtblSupplier` )
   ON DELETE NO ACTION
   ON UPDATE NO ACTION);

CREATE INDEX fk_tblProducts_has_tblSupplier_tblProducts ON `energie`.`tblProducts_has_tblSupplier` (`tblProducts_idtblProducts` ASC) ;

CREATE INDEX fk_tblProducts_has_tblSupplier_tblSupplier ON `energie`.`tblProducts_has_tblSupplier` (`tblSupplier_idtblSupplier` ASC) ;



SET [EMAIL PROTECTED];
SET [EMAIL PROTECTED];
SET [EMAIL PROTECTED];


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to