2016-07-05 4 views
0

Ich baue ein Kabel Kundenprojekt Datenbankstruktur in diesem Projekt Kunden (Abonnenten) verwenden Service-Produkte wie (Settopbox, Modem, etc 3 oder 4 Service-Produkte mit unterschiedlichen Attributen). Im Folgenden finden Sie Struktur der Datenbank-Tabelle: -Wie man Datenbanktabellenstruktur für Kundendienstprodukte in mysql PHP erstellt?

Kunden Tabelle

customer_id, Name, Adresse, PHONE_NO, etc

customer_settopbox Tisch
customer_modem Tabelle
Pakete Tabelle

meine Frage ist, : - 1. Ist es gut, separate Tabelle für jedes Gerät zu erstellen und dem Kunden zuzuweisen.

oder eine andere Methode ist dafür da. weil jedes Gerät seine eigenen Attribute hat wie Settopbox hat VCNO, SerialNo usw. Modem hat andere Attribute. Ich werde sehr dankbar sein.

+0

es ist gut, im Allgemeinen keine separate zu bauen ... – Drew

Antwort

1
  • Fügen Sie alle gemeinsamen Produktfelder zur Produkttabelle hinzu.
  • Alle benutzerdefinierten Dateien können in die Tabelle product_custom_attribute gestellt werden.

können Sie Struktur wie folgt verwendet werden:

CREATE TABLE `customer` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(45) NOT NULL, 
    `address` VARCHAR(255) NULL, 
    `phone_no` VARCHAR(10) NULL, 
    PRIMARY KEY (`id`) 
); 


CREATE TABLE `product_type` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`id`) 
); 



CREATE TABLE `product` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `type` INT(11) NOT NULL, 
    `name` VARCHAR(45) NOT NULL, 
    `description` VARCHAR(255) DEFAULT NULL, 
    `customer_id` INT(11) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `FK product type product_type id_idx` (`type`), 
    KEY `FK product customer_id customer id_idx` (`customer_id`), 
    CONSTRAINT `FK product customer_id customer id` FOREIGN KEY (`customer_id`) 
     REFERENCES `customer` (`id`) 
     ON DELETE CASCADE ON UPDATE NO ACTION, 
    CONSTRAINT `FK product type product_type id` FOREIGN KEY (`type`) 
     REFERENCES `product_type` (`id`) 
     ON DELETE NO ACTION ON UPDATE NO ACTION 
) ENGINE=INNODB DEFAULT CHARSET=UTF8; 




CREATE TABLE `product_custom_attribute` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `product_id` INT NOT NULL, 
    `name` VARCHAR(45) NOT NULL, 
    `value` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`id`), 
    INDEX `FK product_custom_attribute product_id product id_idx` (`product_id` ASC), 
    CONSTRAINT `FK product_custom_attribute product_id product id` FOREIGN KEY (`product_id`) 
     REFERENCES `product` (`id`) 
     ON DELETE CASCADE ON UPDATE NO ACTION 
); 

Wenn Sie mit FOREIGN KEY s Gebrauch nicht vertraut machen dieses eine

CREATE TABLE `customer` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(45) NOT NULL, 
    `address` VARCHAR(255) NULL, 
    `phone_no` VARCHAR(10) NULL, 
    PRIMARY KEY (`id`)); 


CREATE TABLE `product` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `type` int(11) NOT NULL, 
    `name` varchar(45) NOT NULL, 
    `customer_id` int(11) DEFAULT NULL, 
    `description` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `FK product type product_type id_idx` (`type`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 



CREATE TABLE `product_custom_attribute` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `product_id` int(11) NOT NULL, 
    `name` varchar(45) NOT NULL, 
    `value` varchar(45) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `FK product_custom_attribute product_id product id_idx` (`product_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 


CREATE TABLE `product_type` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(45) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
+0

Ich habe im Moment nur zwei Arten von Geräten wie Settopbox und Internet-Modem und ich muss dort Werte mit verschiedenen Attributen wie Settopbox hat VCNo, SerialNo, ChipId, Modell und Modem hat verschiedene wie ModelNo PinNo usw. –

+0

meine Struktur ist vollständig passt Ihre Anforderungen –

+0

Sie haben Recht. Vielen Dank. aber wie Kundenprodukt zu finden –

0

Erstellen Sie keine Tabelle für jedes Gerät. Stattdessen können Sie eine Tabelle namens "Geräteattribute" mit den Attributen für jedes Gerät erstellen. Es wird einfacher sein, auf diese Tabelle zu verweisen und die Attribute für jedes Gerät zu übernehmen. In der Tabelle des Kunden können Sie auf ein Gerät verweisen.

+0

Jeder Kunde kann mehr als ein Gerät und wo Geräteattribute Werte für jeden Kunden –

+0

@ RammeharSharma speichern, das wird kein Problem sein. Die Tabelle customer_settopbox, die Tabelle customer_modem und die Tabelle packages können jeden Eintrag aufzeichnen. Sie können alle Produkte eines bestimmten Benutzers durchsuchen und dann die Eigenschaften des Produkts in der Eigenschaftentabelle überprüfen. –

+0

können Sie ein Beispiel mit der Tabellenstruktur –

0

Es hängt sehr viel davon ab, wie Sie die Zukunft sehen. Wenn es eine bekannte Anzahl von Produkten gibt, die NEVER erweitert werden, können Sie zusätzliche Spalten in der Tabelle des Kunden haben. Wenn auf der anderen Seite ist die Liste der Produkte anfällig ist in der Zukunft zu ändern, mit einer separaten Tabelle (im Wesentlichen) 3 Spalten:

- Customer ID (reference to the customer's table record) 
- Product type 
- Product status 

Dies wird Ihnen alle benötigten Flexibilität, während die Dinge einfach zu halten.

+0

Jeder Kunde kann mehr als ein Gerät haben und die Geräteattributwerte für jeden Kunden speichern –

+0

Die zusätzliche Tabelle kann so viele Spalten enthalten, wie Sie benötigen. In meinem Beispiel habe ich die drei grundlegenden Elemente hinzugefügt, aber Sie können (und sollten vielleicht) so viele hinzufügen wie nötig. – FDavidov

+0

Kundengerät Tabelle wie customer_device_id, customer_id, Gerätename, VCNo, CardNo, SerialNo usw. Ich weiß nicht, wie verschiedene Geräte mit unterschiedlichen Attributen und Wert für jeden Kunden zu speichern –

Verwandte Themen