Degeim Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 Hei Jeg driver og lærer meg å bruke databaser for tiden. Jeg må si jeg liker det; mye enklere enn flatfiler, join() og split()! Nå har jeg en database med tre tabeller. Første tabell inneholder organisasjonsnavn og -ID. Andre tabell inneholder sjefsnavn, -ID, -påloggingsopplysninger og hvilken organisasjon (org.s ID) sjefen tilhører. Tredje tabell inneholder arbeidere; navn, ID, pålogging, hvilken sjef (ID) han tilhører. Så lurer jeg på; om det er femten organisasjoner med femten sjefer i hver, og femten arbeidere per sjef, så blir det 15^3 rader i den siste tabellen. Eller tenk dere enda flere; vil det etter hvert bli treigt å slå opp i den siste tabellen da? Bør jeg heller opprette en tabell per sjef, som inneholder arbeidere, slik at det blir mange små tabeller, eller er en stor best? Og videre lurer jeg litt på ASP.Net-kontroller. I vanlige C#-prosjekter er det bare å slenge ut kontroller hvor som helst vha form.Controls.Add() og OnClick+=void. Går det an i ASP.Net? Jeg går ut fra det; så hvordan? Jeg vet hvordan jeg legger til knapper i designer-fila (<asp:button osv>), men hvordan gjør jeg det fra .aspx.cs-fila (og viktigst: hvordan registrerer jeg trykk på knapper jeg har lagt til herfra?)? Mye tekst, men enkle spørsmål, tror jeg. På forhånd takk, Erlend Lenke til kommentar
Manfred Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 Slik jeg ser det har du en tabell for mye. Hvorfor trenger du to tabeller for noen som inneholder omtrent det samme? både en sjef og en "vanlig" ansatt er like fullt personer. hva med å ha med en fk_status_id og en tabell Status som ineholder Status -------- pk_id Status (Sjef, ansatt, osv...) for å håntere klikk på en knapp bruker du jo da <asp:Button ID="MyButton" runat="server" OnClick="MyFunction" /> og i koden: protected void MyFunction(object sender, EventArgs e) { //WHAT TO DO } Lenke til kommentar
j000rn Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 Jeg ville gjordt dette med kun 2 tabeller: Company: * CompanyID * CompanyName Employee: * EmployeeID * ParentEmployeeID <-- peker tilbake på sjefen til en ansatt * CompanyID * EmployeeName ----- Nestegang bør du lage 2 innlegg om du har 2 forskjellige spørsmål.... Du kan legge kontroller hvor som helst i ASP.Net ja (Control.AddAt(?)), men det er mye enklere å lage f.eks. <ASP:Panel> eller <ASP:PlaceHoldere>'e på siden og slenge kontrollene dine inn her. MinPanel.Controls.Add(...);... Husk at kontrollene må initialiseres og legges til for hver postback. Lenke til kommentar
Degeim Skrevet 8. mai 2008 Forfatter Del Skrevet 8. mai 2008 Supert! Takk til begge to. Og ja, to tråder kunne nok vært hensiktsmessig her. Bare det at dette var veldig relatert for meg, så jeg tenkte ikke over det . Lenke til kommentar
Manfred Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 Poenget mitt med en statustabell var at man da kunne utvide til mer enn bare sjef/ansatt senere uten å måtte endre databasedesignet.. Lenke til kommentar
steingrim Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 Først og fremst er jeg enig med de andre, modelleringen er ikke helt god. Du klarer deg med to tabeller for dette hierarkiet. Så lurer jeg på; om det er femten organisasjoner med femten sjefer i hver, og femten arbeidere per sjef, så blir det 15^3 rader i den siste tabellen. Eller tenk dere enda flere; vil det etter hvert bli treigt å slå opp i den siste tabellen da? Bør jeg heller opprette en tabell per sjef, som inneholder arbeidere, slik at det blir mange små tabeller, eller er en stor best? 15^3 er 3375 som er et ekstremt lavt tall i databasesammenheng. Du lager selvsagt en index eller to, men uansett er dette latterlig lavt og ikke noe problem mtp hastighet. Jeg jobber selv mot databaser som får 5-6 millioner NYE rader hver eneste dag med 10 års historikk og da må man tenke litt mer enn bare indekser. Men i ditt tilfelle trenger du ikke det. Lenke til kommentar
Degeim Skrevet 8. mai 2008 Forfatter Del Skrevet 8. mai 2008 Jepp, jeg har endret det til to tabeller nå. Men hva om en arbeider har to sjefer; bør jeg da ha en ParentID som er string, feks "IDa|IDb" og bruke split(), eller finnes det et annet magisk triks? Lenke til kommentar
j000rn Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 Men hva om en arbeider har to sjefer; bør jeg da ha en ParentID som er string, feks "IDa|IDb" og bruke split(), eller finnes det et annet magisk triks? Magisk triks Mange-til-mange tabell. Company: * CompanyID * CompanyName Employee: * EmployeeID // Fjerne denne * ParentEmployeeID <-- peker tilbake på sjefen til en ansatt * CompanyID * EmployeeName EmployeeBoss * EmployeeID * EmployeeBossID Lenke til kommentar
steingrim Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 (endret) Ah, om du har mulighet for to sjefer stiller det seg selvsagt annerledes. Da har du plutselig et mange-til-mange forhold og da er det vanlig å ha en tabell som linker dette sammen. Noe ala: sjef ---- ansatt_id foreign key references ansatt, sjef_id foreign key references ansatt primary key (ansatt_id, sjef_id) EDIT: bleh. Jorn79 du er for rask! Jeg rekker jo ikke hente kaffe engang. Endret 8. mai 2008 av steingrim Lenke til kommentar
excrucio Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 (endret) Med flere sjefer per ansatt får du en mange-til-mange-relasjon. En sjef har mange ansatte, og en ansatt har mange sjefer. Denne situasjonen løses ved å opprette en ny tabell i databasen. Orker ikke forklare, du skjønner nok tegninga ved å kikke på denne tråden: https://www.diskusjon.no/index.php?showtopic=836556 EDIT: For sein der ja... Endret 8. mai 2008 av excrucio Lenke til kommentar
Degeim Skrevet 8. mai 2008 Forfatter Del Skrevet 8. mai 2008 (endret) Det var et magisk triks, ja . Får se om jeg gidder det der; hvis ikke får hver arbeider klare seg med en sjef! EDIT: Haha, voldsomt så hjelpevillige folk var, da Endret 8. mai 2008 av Degeim Lenke til kommentar
steingrim Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 Seint på dagen, vi kjeder oss på jobb og vil hjem Lenke til kommentar
j000rn Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 sjef ---- ansatt_id foreign key references ansatt, sjef_id foreign key references ansatt primary key (ansatt_id, sjef_id) EDIT: bleh. Jorn79 du er for rask! Jeg rekker jo ikke hente kaffe engang. Men vi prøver å få degheim til å slutte å bruke (ny)norske variabel navn. Det samme gjelder for databaser. Skriv engelsk! Og nå skal jeg lage middag, så du kan få lov å svare i ro og mak... Lenke til kommentar
Degeim Skrevet 8. mai 2008 Forfatter Del Skrevet 8. mai 2008 (endret) Ja, for all del! Jeg er ferdig med nynorske variabler; databasen er på engelsk, og det er all programmeringen min også. Nynorsken gikk bort sammen med VB! Men når jeg spør etter hjelp her snakker jeg norsk, så jeg oversatte da "user" til "arbeider", osv. Dersom du vil ha det på engelsk her også, kan du kopiere all teksten, lime den inn i Word (eller et annet program som tror det er en WYSIWYG-editor), og kjøre et "Søk og erstatt" på kolonneoverskriftene mine . Noe nytt om IRC-serveren til Ole, da? Endret 8. mai 2008 av Degeim Lenke til kommentar
Degeim Skrevet 8. mai 2008 Forfatter Del Skrevet 8. mai 2008 (endret) Haha! Bare litt synd at det er stygge tegn mellom hvert ord der EDIT: Haha!: "Seint at day we links us at job and shall home " Endret 8. mai 2008 av Degeim Lenke til kommentar
steingrim Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 Men vi prøver å få degheim til å slutte å bruke (ny)norske variabel navn. Det samme gjelder for databaser. Skriv engelsk! Beklager Men skal jeg skrive raskt nok til å komme deg i forkjøpet må jeg ta noen snarveier. Nå hjalp det dessverre ikke denne gangen da... Skjerpings skal bli! Lenke til kommentar
Degeim Skrevet 8. mai 2008 Forfatter Del Skrevet 8. mai 2008 Pfft, skriv norsk. Bare i selve programmeringen ting skal være engelske . Jeg ser forøvrig at xml kan velges som verditype, så jeg tror jeg velger det i de kolonnene der jeg skal lagre ting jeg normalt sett ville hatt i List<> eller Dictionary<>. Enklere enn mange-til-mange-database . Lenke til kommentar
steingrim Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 (endret) Helt til du skal plukke ut alle som har Foo Bar som sjef, da blir det vanskelig å skrive en spørring for det. Edit: dobbelt Endret 8. mai 2008 av steingrim Lenke til kommentar
GeirGrusom Skrevet 8. mai 2008 Del Skrevet 8. mai 2008 Lurer på hvordan den oversetteren får "Edit: dobbelt" til å bli "Edit: binary"... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå