---
title: "Databasdesign"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/42369-databasdesign"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "clarkbones"
published: "2002-04-23T20:28:55.000Z"
updated: "2002-04-24T09:04:05.000Z"
replies: 5
views: 351
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/42369-databasdesign"
---

# Databasdesign

## #1 — clarkbones, 2002-04-23T20:28Z

Databasdesign...

Skissar på en databas för flygbokning. Det finns förstås resenärer. Det finns förstås också anställda (piloter, flygvärdinnor). En anställd finns det lite fler uppgifter om jämfört med en resenär (titel,utbildning, bonus mm). En poäng vore då förstås att ha en tabell kallad Resenärer och en Anställda. Och en anställd kan förstås ibland vara en resenär. Ändrar jag adressen för en resenär som också är en anställd vill jag slippa ändra adressen på två ställen. 

Så jag gjorde en tabell kallad Person. I denna tabell finns alla fält för gemensamma egenskaper/fält för Anställda och Resenärer (adress, telefon, email). Slutligen finns ett fält i Person (Anställningsnummer) som är länkad till en tabell Kallad Anställda. I tabellen anställda har jag lagt fältnamn som titel, utbildning osv.

Om det är någon som orkat sätta sig in i detta så här långt undrar jag om det är vettigt? (Det blir knepigt vid frågekonstruktion)

Om det inte är det, hur skall jag då principiellt göra för att slippa ändra adressuppgifter på två ställen?

Permalänk: https://www.webforum.nu/p/42369

## #2 — SPiN, 2002-04-23T20:37Z

Låter bra, men jag tror inte att du behöver ha det där extra-fältet med anställningsnummer i tabellen Person. Du skulle istället kunna sätta en sekundär nyckel ( :q Eng. foreign key ) i tabellen Anställda med Person's unika ID, och alla de extrafält som en anställd behöver.

Frågorna behöver väl inte bli så krångliga? Lite nästade frågor är bara kul. ;)

Permalänk: https://www.webforum.nu/p/656528

## #3 — clarkbones, 2002-04-23T20:59Z

Som det är nu är det väldigt svårt för mig att svar på frågan "Vilka piloter (vad heter de) har passageraren Dan flugit med" eftersom jag måste ha ett WHERE villkor med 'Dan'. Problemet är ju att piloterna finns i samma tabell så i och med att jag filtrerar på Dan så kan jag inte visa piloternas namn...

Permalänk: https://www.webforum.nu/p/656542

## #4 — LarsG, 2002-04-23T21:14Z

Du får använda flera instanser av persontabellen

```
select e.name 
  from person e join flight on e.id = f.crewid 
    join passenger p on f.flightid = p.flightid 
  join person r on p.flyer = r.id
 where r.name = 'Dan'
```

Permalänk: https://www.webforum.nu/p/656558

## #5 — Lasp, 2002-04-24T05:22Z

Du är på rätt spår! Person är helt rätt, det är vilken "roll" en person har som är knytet till ett visst tillfälle (dagTid) TS.

Om du gör det hela seriös skall du även lägga undan adressändringen, så du kanske skall ha en adresstabell med giltigt from-tom.

Permalänk: https://www.webforum.nu/p/656596

## #6 — Toonster, 2002-04-24T09:04Z

Jag är lite osäker på om det är rätt att ha samma tabell för passagerare och anställda.

Det beror lite på vad som är grunden i systemet, personerna eller platserna i ett flygplan. Eller är det flighterna?

Är det flighterna så bör man utgå från flightnr och sedan dess passagerare och personal. osv.

Eftersom personal har mer information än passagerare, så bör det vara skilda tabeller.

/T

Permalänk: https://www.webforum.nu/p/656752

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/42369-databasdesign
