Zitat von
marabu:
Hallo Manfred,
Zitat von
manfred_h:
Die Theorie ist mir eigentlich klar, nur die umsetzung hapert noch.
ist dir bewusst, dass ein
GUID eine segmentierte 128-bit Zahl ist, die als Zeichenkette der Länge 38 repräsentiert wird?
Code:
'{00000002-0000-0000-C000-000000000046}'
Solange dein RDBMS keine 128-bit Zahlen speichern kann, musst du sehr genau überlegen, ob du auf die performanten 32-bit Schlüssel verzichten kannst. Da ich dein
DB-Schema nicht kenne, kann ich schlecht beurteilen, ob du mit den
GUID-Schlüsseln eine gute Entscheidung triffst oder nicht. Meine Erfahrung sagt mir aber - eher nicht.
Hallo Marabu
danke schon mal für die Antwort.
Als
DB setzte ich Firebird in der Version 1.5 mit den FibPlus-Komponenten ein.
In den Infos zu FibPlus wird speziell erwähnt das diese auch
GUID's unterstüzen und da dieselben nur für
Firebird sind ( meines Wissens ) sollte das doch gehen.
Die Frage der Geschwindigkeit habe ich hier im Forum schon mal gestellt und diese Antort bekommen:
GUID in Firebird und die Geschwindikeit
Die Entscheidung mit den
GUID's habe ich getroffen weil die Anwendung von mehreren ( >100 ) Personen
genutzt wird, die die Daten über das Internet abgleichen müssen ( miteinander ).
Die Anzahl der Benuzter darf nich beschränkt sein. Aber jeder einzelene Benutzer hat nicht den Zugriff auf alle
Daten, nur für die aus seiner Region. (Daher is die Anzahl der Datensätze normalerweise niicht so hoch )
Aus etlichen Foren / Dokus bin ich dann zum schluss gekommen das das mit einer
GUID möglich währe.
( Bin aber immer gerne Lernbereit )
Manfred
( PS: Die längere Antwortzeit soll wirklich kein Zeichen für Desinteresse sein
)
mein
DB schema sieht wie folgt aus ( ein Auszug )
SQL-Code:
/******************************************************************************/
/**** DOMAINS START ****/
/******************************************************************************/
CREATE DOMAIN "ID" AS CHAR(38) CHARACTER SET ISO8859_1 NOT NULL;
CREATE DOMAIN "PLZ" AS VARCHAR(10) CHARACTER SET UNICODE_FSS;
CREATE DOMAIN "STATUS" AS VARCHAR(10) CHARACTER SET UNICODE_FSS;
CREATE DOMAIN "T10" AS VARCHAR(10) CHARACTER SET UNICODE_FSS;
CREATE DOMAIN "T20" AS VARCHAR(20) CHARACTER SET UNICODE_FSS;
CREATE DOMAIN "T30" AS VARCHAR(30) CHARACTER SET UNICODE_FSS;
CREATE DOMAIN "T50" AS VARCHAR(50) CHARACTER SET UNICODE_FSS;
CREATE DOMAIN "T70" AS VARCHAR(50) CHARACTER SET UNICODE_FSS;
CREATE DOMAIN "T130" AS VARCHAR(130) CHARACTER SET UNICODE_FSS;
CREATE DOMAIN "T255" AS VARCHAR(255) CHARACTER SET UNICODE_FSS;
CREATE DOMAIN "DATE" AS DATE;
CREATE DOMAIN "TIME_S" AS TIMESTAMP;
CREATE DOMAIN "I_O" AS DECIMAL(9, 0);
CREATE DOMAIN "TEXT" AS BLOB SUB_TYPE 2 SEGMENT SIZE 4096;
/******************************************************************************/
/**** ALTERSHEIM Start ****/
/**** NURSING HOME Start ****/
/******************************************************************************/
CREATE TABLE NURSING_H
(
"ID" "ID",
"C_NR" "T30" NOT NULL,
"U_NR" "T30" NOT NULL,
"NAME" "T130",
"STR" "T130",
"PLZ" "PLZ",
"CITY" "T50",
"TEL" "T20",
"FAX" "T20",
"EMAIL" "T50",
"HOMEPAGE" "T130",
"ANZ_PL" "T10",
"WORKER" INTEGER,
"MT" SMALLINT,
"ACCEPTANCE" INTEGER,
"STATUS" INTEGER,
"MEMO" "TEXT",
"NC" INTEGER,
"CS" INTEGER,
"L_UPDATE" "TIME_S",
"STAT_UPDATE" INTEGER,
"STAT_DEL" INTEGER
);
/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/
ALTER TABLE NURSING_H ADD PRIMARY KEY (ID);
ALTER TABLE NURSING_H ADD FOREIGN KEY ("C_NR") REFERENCES CAMPS ("C_NR") ON UPDATE CASCADE;
/**ALTER TABLE NURSING_H ADD FOREIGN KEY ("U_NR") REFERENCES CAMPS ("U_NR") ON UPDATE CASCADE;**/