AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DB-Design-Frage: unique index richtig verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

DB-Design-Frage: unique index richtig verwenden

Ein Thema von hoika · begonnen am 10. Mai 2008 · letzter Beitrag vom 10. Mai 2008
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#1

DB-Design-Frage: unique index richtig verwenden

  Alt 10. Mai 2008, 08:41
Datenbank: FB • Version: 1.5 • Zugriff über: egal
Hallo #,

zum Topic viel mir nichts besseres ein ...

also:
Personen sollen Projekten oder Projektpositionen zugeordnet werden.

Dabei gibt es folgende Bedingungen:
Bed_1. keine doppelten Zuordnungen
Bed_2. ist eine Person dem Projekt zugeordnet,
kann sie keiner Position dieses Projektes zugeordnet werden
(das Projekt reicht ja in diesem Fall)
Bed_3. eine Person kann mehreren Positionen des Projektes zugeordnet werden

Meine Tabelle sieht bisher wie folgt aus (Änderungen sind noch möglich)

Tabelle: Id(autoinc),PersonalId,ProjectId,PosId

Bei Projekt-Einträgen ist PosId=0

Kann ich jetzt durch unique indices die Inforderungen erfüllen ?

idx_1: (PersonalId,ProjectId,PosId)
-> Bed_1 erfüllt, Bed_3 erfüllt, Bed_2 nicht erfüllt

Geht das überhaut über die DB ?


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: DB-Design-Frage: unique index richtig verwenden

  Alt 10. Mai 2008, 08:46
Ich würde es mal mit einem check constraint versuchen. Bin mir aber nicht sicher, ob die Anforderung nicht zu komplex ist.
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: DB-Design-Frage: unique index richtig verwenden

  Alt 10. Mai 2008, 08:51
Hallo,

deshalb hatte ich es nicht als mögliche Lösung erwähnt .. ;(
Nun ja, mal sehen,
ob ich das in ner SP hinbekomme.

aber per Unique Index ginge es nicht ?
Ich bin noch offen (habe noch keine Tabelle angelegt).
Ich könnte auch 2 Tabellen nehmen (für Projekt und Position),
aber das macht das ja noch komplizierter.


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: DB-Design-Frage: unique index richtig verwenden

  Alt 10. Mai 2008, 08:54
Test doch mal, ob so fehlerhafte Inserts akzeptiert werden
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: DB-Design-Frage: unique index richtig verwenden

  Alt 10. Mai 2008, 09:17
Hallo,

brauche ich nicht, sieht man doch auch so

Id,PersonalId,ProjectId,PosId
1,100,1,0
2,100,1,10

Das geht, aber jetzt steht die Person sowohl
im Project als auch in der Position 10 des gleichen Projektes.

Der Index erlaubt aber folgendes und das soll er ja auch

3,100,1,5
4,100,1,10

2 Positionen.


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: DB-Design-Frage: unique index richtig verwenden

  Alt 10. Mai 2008, 11:51
Habe mir eine Testtabelle angelegt. Ein check constraint funktioniert
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: DB-Design-Frage: unique index richtig verwenden

  Alt 10. Mai 2008, 12:53
Hallo,

hm ?
wie sieht der denn aus?
habe gerade einen leeren Kopf.


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: DB-Design-Frage: unique index richtig verwenden

  Alt 10. Mai 2008, 13:00
not exists (select pos from <tabelle> where persid=new.persid and projektid = new.projektid and pos = 0)
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz