SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 02.10.2003, 08:03:19
Benutzerbild von flobee
flobee flobee ist offline
Junior Member
 
Registriert seit: Apr 2002
Beiträge: 284
datenbank design eines adressbuches

hallo
ich suche seit geraumer zeit sehr viele webseiten ab um mal eine vernunftige idee/vorlage zu sehen für ein datenbank design einer ordentlichen adressverwaltung.
die mehrere emails, adressen je nach priorisierungung innerhalb von benutzergruppen und vergabe von kategorien zu diesen daten verwalten kann. hat jemand ggf einen link,oder tip in diese richtung?

meine idee ist es die adressdaten komplett in seine einzelteile zu zerlegen und entsprechende einzelne tabellen für email, anschriften, namen , rufnummen, extra features und notizen anzulegen und nur noch mit IDs zu arbeiten. allerdings komme ich nicht weiter wenn ich mir vorstelle das ich nun die IDs dieser daten zusammen habe, und diese nochmals auf benutzergruppen oder besondere kategorien(genre/labels) aller-daten oder nur meiner eigenen benutzergruppe abwickeln möchte. bzw: auch in abgängikeit von PRIVAT:GRUPPE:GLOBAL(öffentlich) der einzelnen einträge: zb: die eine email ist privat die zweit email einer person kann von der gruppe eingesehen werden...)
das würde bedeuten das ich den besitzer sowie rechte zu jedem daten satz einer tabelle speichern müsste... was wiederum eigentl. kein gutes performantes design ist oder?
bsp
tabelle email
id - email - privat - gruppe - öffentlich - besitzer
auto email Y/N Y/N Y/N Y/N
(es hängt am abstakten denken :-)

gruss flobee
__________________
~~~~~~~~~~

Geändert von flobee (02.10.2003 um 08:26:44 Uhr)
Mit Zitat antworten
  #2  
Alt 02.10.2003, 08:20:23
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
hi flobee

ich setzt mich heute noch hin und mach dir mal ein Layout


Wenn ich das richtig gelesen habe, hast du:
einen Benutzer, der befindet sich in einer Gruppe.
der Eintrag einer zB Email-Addresse, kann dann Öffentlich, Gruppen, oder Persönlich sein.

Fragen:
Kann ein Benutzer in mehreren Gruppen sein.
gibt es nur eine Öffentliche Email-Addy, oder mehrere.
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
  #3  
Alt 02.10.2003, 08:51:39
Benutzerbild von flobee
flobee flobee ist offline
Junior Member
 
Registriert seit: Apr 2002
Beiträge: 284
yo! das ist aber nett!!!
hast richtig verstanden!
ein benutzer kann u.u auch in mehreren gruppen sein mindestens aber auch admins, moderatoren, andere, insofern ja.
anzahl der emails oder der anschriften ist unbestimmt! anschriften werden wiederum durch adresstypen definiert (in der regel 3, privat, büro, lieferanschrift) bei email sind es mind eine "standart" email2, mail3 emailN ....wobei ja keine doppelten datenbank einträge vorkommen sollen....

die idee war zusätzlich (wenn alles total einzeln liegt): alte einträge weitehin speichern und immer nur die letzten zb 3 zeilen anzeigen, (wenn vorhanden (LIMIT 3)). bei adressänderungen hat man dann immer noch mal die möglichkeit die mutter des freundes zu "erwischen" falls die aktuelle adresse ungültig wird. quasi ein "tracking" der daten.
ja: der benutzer ist ein gruppen-mitglied, und nach möglichkeit möchte ich zu meinem adressdatenen satz bestimmte einträge, notizen PRIVAT lassen (read/write), GRUPPE (read/write) und ÖFFETLICH (read/write)

habe eben noch einen nachtrag geschrieben wo man dann sieht das das eigentl. schon wieder unlogisch wird wienn man in jede tabelle die rechte plaziert (bzw wirds dann kein "ordentl. design und mehr speicher kostet es ggf auch oder):
Code:
tabelle email
id - email - privat - gruppe - öffentlich - besitzer
auto email Y/N Y/N Y/N Y/N
UNIQUE= email (minimum)
gruß flobee
__________________
~~~~~~~~~~

Geändert von flobee (02.10.2003 um 09:06:44 Uhr)
Mit Zitat antworten
  #4  
Alt 02.10.2003, 22:33:33
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
Hi flobee

Sorry, ich komm erst morgen dazu.

Hatte eine Meeting verschwitzt und am Abend noch ein Geschäftsessen gehabt.

Muss also noch etwas warten
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
  #5  
Alt 02.10.2003, 22:58:28
Benutzerbild von flobee
flobee flobee ist offline
Junior Member
 
Registriert seit: Apr 2002
Beiträge: 284
yo! also das ist meine idee, aber irgendetwas sagt mir das das schon ZU VIEL ist (zuviel speicher), und auch irgendwie falsch da ich beispiesweise ja keine doppelten emailadressen haben möchte, es sein denn sie sind "privat"...oder bekomme ich das so gelösst?

PHP-Code:
=== Name Personen daten
ID 
Anrede:Hr,Fr, | titelProf,Dr.,Dr.med., | VORname 2VORname NACHname Geb.tag |  besitzer/ersteller-ID

=== anschrift
ID 
firma Strasse Nr. | PLZ Stadt Land TYPE:privat,büro,liefer...  | Standard-adrY/besitzer/ersteller-ID

=== emails
ID 
emailadresse Standard-adrY/besitzer/ersteller-ID

=== notitzfelder
ID 
notiz-notiz-besitzer/ersteller-ID


=== Adressbuch -> besitzer/ersteller
besitzer
/ersteller-ID  tabelle-Name:privat,gruppe,public | tabelle-anschrift:privat,gruppe,public | tabelle-emails:privat,gruppe,public | tabelle-notitzfelder:privat,gruppe,public | 
__________________
~~~~~~~~~~

Geändert von flobee (02.10.2003 um 23:26:25 Uhr)
Mit Zitat antworten
  #6  
Alt 03.10.2003, 16:30:52
uop uop ist offline
Anfänger
 
Registriert seit: Oct 2003
Ort: CH-Bolligen
Beiträge: 2
Warum nicht in den Teiltabellen angeben, welche "Klasse" sie haben?

Warum gibst du nicht z.B. direkt in den Tabellen für die Anschriften, mailadreses.... für jede Klasse (Public, prvate, global) ein Boolean-Feld dazu, wo du angibst, ob dieser Datensatz in dieser Klasse erscheinen soll oder nicht? so kannst du ein DS für alle Klassen, oder drei, für jede Klasse einen anderen, oder jede beliebige Kombination davon haben.

Du musst einfach beim Abfragen immer mitabfragen, ob die KLasse die du möchtest gesetzt ist.

Das funktioniert aber nur, wenn du die Klassen statisch fix definiert hast, andernfallst musst du ein modell wählen, dass du evtl von VBA her kennst. Jede Klasse hat einen anderen numerischen wert, der kombiniert eindeutig aufschlüsselbar ist (s.unten) und speicherst diesen Wert in ein Feld. so kannst du jederzeit Klassen anfügen.

Werttabelle:

Global: 1
private: 2
public: 4
neue1: 8

wenn nun z.B. ein Eintrag private und global ist, hat er den wert 3
wenn nun z.B. ein Eintrag private und public ist, hat er den wert 6
wenn nun z.B. ein Eintrag public und global ist, hat er den wert 5
wenn ein eintrag global, public und private ist, hat er den wert 7
...
..
.


ist einfach beim abfragen nicht mehr ganz so einfach. wie du vielleicht bemerkt hast, basiert das ganze auf dem binären Zahlensystem, und irgendwie so must du auch die "rückumwandlung" zum testen ob dein Wert den du willst(z.b. global) enthalten ist. jeder Wert entspricht quasi einer Binären stelle
Mit Zitat antworten
  #7  
Alt 03.10.2003, 16:41:50
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
Hi @ll

wie versprochen habe ich dir ein Design überlegt -> siehe unten

Ein User kann in mehreren Gruppen sein.

Ein User kann mehrere Email-Addy's haben
diese können entweder privat, global oder gruppen bezogen sein.
Falls sie Gruppen-Bezogen ist, wird die jeweilige GroupID gespeichert.

durch ein paar einfache SQL kannst du nun zeigen wer was sehen draf.
Angehängte Grafiken
Dateityp: jpg design.jpg (84,3 KB, 370x aufgerufen)
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
  #8  
Alt 03.10.2003, 18:14:45
Benutzerbild von flobee
flobee flobee ist offline
Junior Member
 
Registriert seit: Apr 2002
Beiträge: 284
@uop
ufff, also, frag mich nicht, denn es war ja meine frage nach einem "logischen" DB-aufbau!
binäre IDs geht klar aber den rest wie "DS für alle Klassen", VBS hab ich nicht wirklich verstanden!

@Nev
ersteinmal vielen dank!
kannst du mir die abkürzungen kurz erläutern? NN - fortlaufend, PK,PFK ?
aber auch an deinem beispiel stellt sich mir die frage: eigentl. wird dort zu viel information in der email tabelle gespeichert ...oder?
meine frage vielleicht falsch verstanden und ich hab vielleicht die falsche vorlage geliefert!?
zum einen muss ich jetzt ersteinmal die DB verstehen, bzw sehe ich das richtig: tabelle group== verteilerlisten!? dan hab ich es verstanden!
allerdings ist nun noch die frage des "doppelte einträge" vermeiden nicht behandelt, wenn ich das richtig sehe , oder?
nach dem motto: ersteller==besitzer , gruppe kann je nach privat,gruppe,global shen/editieren.
erstellt ein anderen benutzer den gleichen email eintrag wird nur die email id "aboniert", löscht der besitzer die email wandert der besitzer zum nächsten bis kein benutzer die email mehr verwendet.
editiert ein gruppen member die email, wird ein neuer eintrag (falls neue email) érstellt sofern er nicht besitzer ist anderen falls wird wiederum die geänderte email aus der DB aboniert.
und das auf adressen , telefon tabellen etc...

uff.. das sind viele anforderungen , was ist davon realistisch?

gruß flobee
__________________
~~~~~~~~~~
Mit Zitat antworten
  #9  
Alt 04.10.2003, 08:59:36
Benutzerbild von flobee
flobee flobee ist offline
Junior Member
 
Registriert seit: Apr 2002
Beiträge: 284
hi nev
ich hab deine tabelle mal anders aufgemalt um es mir anders zu verdeutlichen und frage mich was mit der user-group tabelle ist, denn die verstehe ich nicht! die einträge für usergroup_userID und usergroup_groupID sowie email_userID in der email tabelle. kannst du mir da eine info geben was dessen aufgabe ist?

PHP-Code:
=== USER
ID 
name pass

=== USERGROUP
ID 
usergroup_title usergroup_userID usergroup_groupID groupID userID

=== GROUP (verteiler)
ID groupname  owner(usergroupID)

=== 
EMAIL (deston user)
ID userID groupID email_userID email_addr _priv(int) | _group(int) | _global(int) 
gruß flobee
__________________
~~~~~~~~~~
Mit Zitat antworten
  #10  
Alt 04.10.2003, 14:13:01
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
Hi @gain

Beim Abzeichnen des DB-Shemas hast du ein paar keine Fehler gemacht.

Code:
=== USER
ID | name | pass

=== USERGROUP
ID | usergroup_title | usergroup_userID(int) | usergroup_groupID(int)

=== GROUP (verteiler)
ID | groupname

=== EMAIL (dest, on user)
ID | email_userID(int) | email_addr | _priv(int) | _group(int) | _global(int)
Warum gibt es den Table [USERGROUP]???
Du definierst im Table Group verschiedene Gruppen.
Ein User kann dann in mehreren Groupen sein,
Um diese Verknüpfung herzustellen, brauchst du einen Link-Table -> USERGROUP
Hier wird der User in die jeweiligen Groups geschmissen.
das heißt: es ist eine 1:n beziehung User:UserGroup
und es ist eine 1:n beziehung Group: UserGroup

Wie definiert sich eine Email-Addy?
Jede Addy hat mal eine eindeutige ID
zusätzlich einen User => email_userID
Email_addr, das ist die jeweilige Adresse
_priv gibt an ob sie Privat ist
_global ob sie öffentlich ist
_grop ob sie für eine Group sichtbar ist
wenn _group gesetzt ist, wird hier die ID der Group definiert.
So können alle User die auch in diese Group fallen diese auch sehen.


was du übernommen hast, waren die einzelen Schlüsseln die für die Abbildung notwenig waren
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:08:48 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt