Lite problem med databaser, Mysql

Diskussion i 'Frågor, support och diskussion' startad av appcreator, 10 nov 2011.

  1. appcreator

    appcreator Baby Droid Medlem

    Blev medlem:
    10 nov 2011
    Inlägg:
    19
    Mottagna gillanden:
    0

    MINA ENHETER

    Hej!

    Håller på med en "app" som som ska använda sig av en extern databas, mysql.
    Känner mig något ringrostig på databaser, relationer etc :)

    Mitt mål:
    Användaren ska kunna "tanka" upp data(koordinater) till databasen, genom att ange ett unikt namn. låt oss säga att till varje namn hör 5 koordinater(latitud,longitud).

    Poster ska kunnas tas bort efter tio dagar.

    databasinnehåll: mindatabas(namn,koordinater,timestamp)

    Problemet kan lösas genom att man använder en tabell med fälten:
    Field,Type
    *namn, varchar(10) <---(pimary key,unique)
    lat1, float(10,6)
    lon1, float(10,6)
    lat2, float(10,6)
    lon2, float(10,6)
    lat3, float(10,6)
    lon3, float(10,6)
    lat4, float(10,6)
    lon4, float(10,6)
    lat5, float(10,6)
    lon5, float(10,6)
    timestamp, timestamp

    Tycker inte att det blir en snygg lösning dock :)

    Man ska ju kunna använda två tabeller,
    typ
    mindatabas(namn,koordinater,timestamp)
    koordinater(lat,long)

    Fråga
    Hur blir det med primärnycklar, osv?
    Skulle vilja få det rätt från början, annars får jag väl ta en genväg...

    tacksam för svar!

    mvh/appcreator
     
  2. DreamHawk

    DreamHawk Android Medlem

    Blev medlem:
    28 maj 2010
    Inlägg:
    6 064
    Mottagna gillanden:
    419
    Operatör:
    Tele2
    Telefon:
    iPhone 7

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    iPhone 7
    ROM:
    IOS11
    Telefon 2:
    Google Galaxy Nexus
    ROM:
    LineageOS
    Vet inte vad du försöker göra men... Antar att varje användare ska komma åt sina koordinater i koordinator...

    Lägg "namn_id" i "mindatabastabell1" och "namn_id" i "minkoordinattabell", så kan du "joina" dem senare, om du förstår?
     
  3. appcreator

    appcreator Baby Droid Medlem

    Blev medlem:
    10 nov 2011
    Inlägg:
    19
    Mottagna gillanden:
    0

    MINA ENHETER

    Hej!

    Japp, varje namn ska vara kopplat till 5 koordinater. Borde google runt o kolla ditt svar med join, men jag har inte möjlighet just nu.

    Men jag skulle vilja ha strukturen, primary key/foreign key på de 2 tabellerna som motsvarar den här tabellen. Den här tabellen känns ju inte som en generell lösning.

    *namn, varchar(10) <---(pimary key,unique)
    lat1, float(10,6)
    lon1, float(10,6)
    lat2, float(10,6)
    lon2, float(10,6)
    lat3, float(10,6)
    lon3, float(10,6)
    lat4, float(10,6)
    lon4, float(10,6)
    lat5, float(10,6)
    lon5, float(10,6)
    timestamp, timestamp
    ---------------------------------------------------------------


    Mvh/Martin
     
  4. ozp

    ozp Teen Droid Medlem

    Blev medlem:
    6 maj 2010
    Inlägg:
    250
    Mottagna gillanden:
    31

    MINA ENHETER

    Jag hade nog gjort på följande sätt:

    mindatabas(id,namn,timestamp)
    koordinater(lat,long, mindatabas_id)

    Där varje koordinat vet om vilken mindatabas_record som den tillhör. Detta medför också att du kan ha variabelt antal koordinater kopplat till varje record.
     
  5. appcreator

    appcreator Baby Droid Medlem

    Blev medlem:
    10 nov 2011
    Inlägg:
    19
    Mottagna gillanden:
    0

    MINA ENHETER

    Hej!

    Tack, det kan nog vara en lösning,
    Ska testa..

    Har skapat två tabeller i phpmyadmin.
    primary key=*
    mindatabas(*id,namn,timestamp)
    koordinater(lat,long, *mindatabas_id)

    hur kopplar man ihop tabellerna i phpmyadmin?



    mvh /appcreator
     
  6. DreamHawk

    DreamHawk Android Medlem

    Blev medlem:
    28 maj 2010
    Inlägg:
    6 064
    Mottagna gillanden:
    419
    Operatör:
    Tele2
    Telefon:
    iPhone 7

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    iPhone 7
    ROM:
    IOS11
    Telefon 2:
    Google Galaxy Nexus
    ROM:
    LineageOS

    Nu minns jag inte hur man gör i phpmyadmin, men testa något sådanthär:

    Kod:
    SELECT mindatabas.namn, mindatabas.timestamp, koordinater.lat, koordinater.long
    FROM mindatabas, koordinater
    WHERE mindatabas.id = koordinater.mindatabas_id
    ORDER BY mindatabas.timestamp DESC
    
    Det kan fungera, om du kör querien i phpmyadmin får du byta ut "koordinater.mindatabas_id" emot respektive fält med data där. T.ex "32". (Och då ska mindatabas.id också vara 32)

    Var så längesen jag höll på med sql, iofs pillat lite i min egna app, men inte med joins...

    MySQL - Joins
     
  7. ozp

    ozp Teen Droid Medlem

    Blev medlem:
    6 maj 2010
    Inlägg:
    250
    Mottagna gillanden:
    31

    MINA ENHETER

    Inte helt rätt. Du glömde själva joinen

    Kod:
    SELECT mindatabas.namn, mindatabas.timestamp, koordinater.lat, koordinater.long
    FROM mindatabas INNER JOIN koordinater ON
    mindatabas.id = koordinater.mindatabas_id
    WHERE mindatabas.namn = 'whatever' ORDER BY mindatabas.timestamp DESC
     
  8. DreamHawk

    DreamHawk Android Medlem

    Blev medlem:
    28 maj 2010
    Inlägg:
    6 064
    Mottagna gillanden:
    419
    Operatör:
    Tele2
    Telefon:
    iPhone 7

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    iPhone 7
    ROM:
    IOS11
    Telefon 2:
    Google Galaxy Nexus
    ROM:
    LineageOS
    Misstänkte att jag saknade något, thank you ^^
     
  9. appcreator

    appcreator Baby Droid Medlem

    Blev medlem:
    10 nov 2011
    Inlägg:
    19
    Mottagna gillanden:
    0

    MINA ENHETER

    Hej!


    Så egentligen behöver man inte "koppla" ihop dem vid själva skapandet utan man skapar 2 separata tabeller? sedan får man "trixa" med SQL för att få till INSERT,DELETE, UPDATE, SELECT.

    Har jag fattat allt rätt? :)

    mvh/appcreator
     
  10. DreamHawk

    DreamHawk Android Medlem

    Blev medlem:
    28 maj 2010
    Inlägg:
    6 064
    Mottagna gillanden:
    419
    Operatör:
    Tele2
    Telefon:
    iPhone 7

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    iPhone 7
    ROM:
    IOS11
    Telefon 2:
    Google Galaxy Nexus
    ROM:
    LineageOS
    Nej nej... Det kallas ju "relationsdatabas"...

    Så du kopplar ihop dem genom din "fråga". (Query).
    Påsåsätt kan du hämta från olika tabeller. :)
     
  11. appcreator

    appcreator Baby Droid Medlem

    Blev medlem:
    10 nov 2011
    Inlägg:
    19
    Mottagna gillanden:
    0

    MINA ENHETER

    Tackar! det var så jag menade ;)
     
  12. xciter

    xciter Youth Droid Medlem

    Blev medlem:
    5 apr 2010
    Inlägg:
    189
    Mottagna gillanden:
    19

    MINA ENHETER

    I phpmyadmin kan du välja att minidatabas_id i koordinattabellen hämtar värden från minidatabastabellen eller hur jag ska säga. En foreignkey.
    För att kunna göra det måste tabellerna vara av InnoDB typ. Sedan kan du välja "relation view" för att på så sätt koppla ihop de två tabellerna.