2017-05-18 2 views
0

Tabelle mit bestimmten anderen Attributen für alle Datensätze macht:In RDBMS, wie sichergestellt wird, dass ein Attribut, das Attribut

SOFTWARE 
---------------- 
PNAME (VARCHAR), 
TITLE (VARCHAR), 
DEVIN (VARCHAR), 
SCOST (NUMBER), 
DCOST (NUMBER), 
SOLD (NUMBER) 

Wie kann ich sicherstellen, dass, wenn ich Werte in die Tabelle einfügen, die TITLE, COSTS und SOLD Spalten haben die gleichen Werte, wenn sie als Set verwendet werden? d.h, wann immer Spalte TITLE einen Wert hat x, Spalten SCOST, DCOSTSOLD und haben dieselben Werte a , bc und für alle Datensätze, bei denen TITLE ist x, PNAME und/oder DEVIN variieren.

Antwort

1

Wie APC vorgeschlagen, normalisieren Sie Ihre Tabellen. So etwas wie das:

CREATE TABLE software_titles (
    title VARCHAR2(200) 
     CONSTRAINT software_titles__title__pk PRIMARY KEY, 
    scost NUMBER, 
    dcost NUMBER, 
    sold NUMBER 
); 

CREATE TABLE software_development (
    title VARCHAR2(200) 
     CONSTRAINT software_dev__title__nn NOT NULL 
     CONSTRAINT software_dev__title__fk REFERENCES software_titles (title), 
    pname VARCHAR2(200), 
    devin VARCHAR2(200) 
); 

CREATE VIEW software IS 
    SELECT t.*, 
     d.pname, 
     d.devin 
    FROM software_titles t 
     INNER JOIN 
     software_development d 
     ON (t.title = d.title); 
+0

Dies gab mir die allgemeine Idee, aber die Ansicht wurde gerade nicht aus irgendeinem Grund erstellt, aber wenn ich es in 'CREATE VIEW SOFTWARE AS SELECT T. *, D.PNAME, D.DEVIN VON SOFTWARE_TITLES T, SOFTWARE_ENTWICKLUNG D WHERE änderte T.TITLE = D.TITLE; 'es hat funktioniert, also danke! – user8029928

+0

@ user8029928 Ich hatte fälschlicherweise die Join-Bedingung verlassen - es ist jetzt da und sollte funktionieren. – MT0

0

„In RDBMS, wie sichergestellt werden, dass ein Attribut bestimmte andere Attribute für alle Datensätze macht dieses Attribut mit“ Struktur

Durch Normalisierung Ihrer Daten. Sie benötigen eine separate Tabelle für TITLE, SCOST, DCOST und SOLD. Primärschlüssel wahrscheinlich TITLE.

Ihre vorhandene Tabelle hat einen Fremdschlüssel, der auf diese neue Tabelle verweist.

+0

Danke, ich habe versucht, diesen Ansatz zu vermeiden, da ich mit dem Schema der gegebenen Tabelle bleiben soll. Könnte es einen Workaround geben? – user8029928

Verwandte Themen