---
title: "Design av frågedatabas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/161103-design-av-frågedatabas"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Type"
published: "2007-06-04T18:37:38.000Z"
updated: "2007-06-07T09:45:29.000Z"
replies: 11
views: 623
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/161103-design-av-frågedatabas"
---

# Design av frågedatabas

## #1 — Type, 2007-06-04T18:37Z

Hejsan
Jag behöver verkligen hjälp. Jag sitter här o börjar bli riktigt stressad. vet inte hur jag ska lösa ett problem jag har...

Det är så att jag har ca 10 frågor som lyder:
Innan minus kom till Linköping har minus:
 \- haft sommarlov
 \- letat bostad i linköping
 \- arbetat
 \- ätit godis
 \- rest utomlands
 \- osv
 \- osv

Det är ungefär 10-15 olika kryssalternativ som användarna kan fylla i. Svaren ska sedan lagras i databasen. Om man sen tex har kryssat i vissa ska ett script räkna ut hur man är som person. 

Problemet är hur jag ska spara all denna data på ett så smidigt sätt som möjligt. Vissa av dessa alternativ kommer att ändras nästa år så det vore bra om dessa låg i en tabell på något sätt. 

Nu ligger alternativen hårdkodade i koden och det finns en jättetabell med en kolumn för varje alternativ. Om användaren kryssar i ett alternativ blir det en etta i den kolumnen. Som ni säkert förstår blir det en jättestor tabell (10 frågor med 15 alternativ blir 150 kolumner). Nu är det kanske bara 5 frågor men det blir ändå en väldigt stor tabell...

Hur kan man lättast lagra datan på ett bra sätt?

Jag är tacksam för snabba svar.. helst före morgondagen...

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

## #2 — Lasp, 2007-06-04T19:44Z

Att ha en tabell med många fält är fel, det har du rätt i. En tabell för individen samt Id
Svarsalternativen skapas i en tabell med giltigt from - tom. samt en nyckelkod.
Kryssen sparas med  Id,nyckelkod samt svarsalternativ eventuellt timestamp dvs. datum klockslag.
Tre tabeller i grunden men det kan vara en enkätrelation också.

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

## #3 — Peeer, 2007-06-04T20:03Z

Jag hade nog kört något sådant här

```
användare:
*användar-id
*namn
*telefonnummer
*annat tjaffs

frågor:
*fråge-id
*fråga

svar:
*fråge-id (för att kunna koppla svaren till en fråga)
*svars-id
*svarsalternativ

användarsvar:
*användarid
*frågeid
*svarsid
```

Dvs man kommer få en post i "användarsvar"-tabellen för varje kryss man väljer.

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

## #4 — Type, 2007-06-04T20:11Z

toppen Peeer och Lasp, tack för hjälpen. Jag ska nog fixa det med er hjälp. hör av mig här om jag får problem när jag kommit så långt i implementationen...

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

## #5 — Type, 2007-06-06T10:41Z

Nu har jag börjat spara undan värden. Då får jag genast problem... :(

Jag sparar in namn, telefonnummer o annat tjafs i användartabellen. Då skapas ju ett automatiskt id (auto-increment). Det är ju sedan det numret som ska in i användarsvarstabellen. Men hur gör jag för att få tag på det id:t?
Ett alternativ är ju att köra en 

```
select id from users where namn='användarnamnet'
```

 ... innan man sparar i svardatabasen men om några heter samma sak blir det ju problem?

Kan man på något smart sätt spara allt på en gång?

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

## #6 — Lasp, 2007-06-06T10:56Z

Id bör kanske inte vara automatgenererat! Exempelvis finns det ju ersonnummer.
Eller så skapar du ett eget unikt ID och kollar att det är unikt innan du sparar huvudposten.

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

## #7 — Type, 2007-06-06T11:02Z

> **Lasp skrev:**
>
> Id bör kanske inte vara automatgenererat! Exempelvis finns det ju ersonnummer.
> Eller så skapar du ett eget unikt ID och kollar att det är unikt innan du sparar huvudposten.

ooh. Krångligt. Jag vill helst inte spara personnummer (känns som man inte får spara personnummer hur som helst). 
Att skapa unikt ID var jag inne på men det är inte heller helt hundra. Går det inte att köra insert på två samtidigt alltså? Då är ju unika ID enda sättet? Tycker det känns konstigt att man inte kan fixa det här med relationer bättre...

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

## #8 — Type, 2007-06-06T11:08Z

Jag tror jag har hittat en funktion som löser det jag har problem med. Tack vare den superba sökfunktionen :D:

```
funktion: LAST_INSERT_ID()
```

Jag återkommer om jag får problem. Om det finns något ännu smartare sätt att lösa det är jag tacksam för svar.

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

## #9 — P, 2007-06-06T11:17Z

Lycka till med nollnigen, några år sen man själv var minus, kul :)

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

## #10 — Type, 2007-06-06T17:13Z

hehe :D Tack

Jag har fortfarande ett problem. last_insert_id() hämtar ju senaste id-t. det är skitbra. däremot vill jag lägga till fler än en post i användarsvarsdatabasen och då funkar ju inte last_insert_id längre eftersom det efter första riktiga id-t har lats till kommer det nya id-t bli den senaste postens id. Kan man på något sätt spara undan id-t som i första omgången kommer från last_insert_id()?

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

## #11 — Peeer, 2007-06-07T07:46Z

Ska du lägga till flera användare samtidigt? En möjlig lösning är att du hämtar ut last_insert_id() innan du lägger till den sista användaren. En annan lösning är att du plockar ut de två högsta id-numren från tabellen (förutsatt att du har id-nummer så växer).

```
select id from users order by id desc limit 2
```

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

## #12 — P, 2007-06-07T09:45Z

> **Peeer skrev:**
>
> Ska du lägga till flera användare samtidigt? En möjlig lösning är att du hämtar ut last_insert_id() innan du lägger till den sista användaren. En annan lösning är att du plockar ut de två högsta id-numren från tabellen (förutsatt att du har id-nummer så växer).
>
> ```
> select id from users order by id desc limit 2
> ```

Då är det väl inte helt säkert att man få de som man lagt till, någon annan kan ju lägga till mellan de poster som man själv lägger till.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/161103-design-av-frågedatabas
