tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
488
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    F0rris F0rris ist offline Mitglied Silber
    Registriert seit
    Jan 2005
    Beiträge
    68
    Hallo zusammen,

    derzeit stehe ich vor einem Problem, zwischen Performance und Speichernutzung.

    Konkret gesagt, ich will die Geburtsdaten von Autoren erfassen jedoch erstellt sich das ganze schwieriger als gedacht. Da z. B. nicht für alle Autoren ein genaues Datum gibt, wann diese geboren sind. Deswegen habe ich derzeit Mehrer Lösungsansätze jedoch kann ich mich nicht so wirklich für den passenden entscheiden.

    Alles in eine Spalte schreiben, z. B. 20000120
    Code sql:
    1
    2
    3
    4
    5
    
    CREATE TABLE `date` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `date` INT(8) UNSIGNED ZEROFILL NOT NULL DEFAULT '0',
    `christ` ENUM('TRUE','FALSE') NOT NULL DEFAULT 'FALSE,
    PRIMARY KEY (`id`)) ENGINE=MyISAM CHARSET=utf8;

    Jeden Teil, des Datums einzeln Speichern und einem ENUM-Feld, was einem zeigt, ob es v. Chr. ist oder nicht.
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    
    CREATE  TABLE `date` (
      `id` INT(8)  NOT NULL AUTO_INCREMENT ,
      `date_day` INT(2) NULL ,
      `date_month` INT(2) NULL ,
      `date_year` INT(4) NULL ,
      `christ` ENUM('TRUE','FALSE') DEFAULT 'FALSE,
      PRIMARY KEY (`idnew_table`) );
    bzw. das Jahr negativ setzten wenn es v. Chr. ist, umso ohne ein weiteres ENUM zu Sparen.
    Code sql:
    1
    2
    3
    4
    5
    6
    
    CREATE  TABLE `date` (
      `id` INT(8)  NOT NULL AUTO_INCREMENT ,
      `date_day` INT(2) NULL ,
      `date_month` INT(2) NULL ,
      `date_year` INT(4) NULL ,
      PRIMARY KEY (`idnew_table`) );

    Meine Idee war auch schon, es in einem anderen Datumsformat zu speichern, das Problem ist jedoch ab und an ist nur das Jahr angeben. Gut hier könnte ich es negativ speichern, doch wie weiße ich es dann zu, wenn v. Chr. ist? (Julianisches Datumsformat).
    Code sql:
    1
    2
    3
    4
    
    CREATE  TABLE `date` (
      `id` INT(8)  NOT NULL AUTO_INCREMENT ,
      `date` INT(8) NULL ,
      PRIMARY KEY (`idnew_table`) );

    Am Liebsten würde ich alles in eine Spalte Speichern, so wie beim 1. Lösungsansatz. Das Problem ist nur, ich kann die Werte nicht Negativ Speichern. Gerne würde ich auch bei INTbleiben, für Abfragen mit BETWEEN ...

    Freu mich auf Tipps und Meinungen zu meinen Lösungen.

    Lg F0rris
     
    Ein Nutzer braucht das Root-Passwort so dringend wie Nitroglyzerin durchgeschüttelt werden muss.

  2. #2
    Kyôya Kyôya ist offline Mitglied Silber
    Registriert seit
    Nov 2011
    Ort
    Würzburg
    Beiträge
    62
    Hi,

    du kannst doch den Datentyp BIGINT (signed) nutzen, dann hast du ca. 292.000 Jahre in beide Richtungen zur Verfügung, ob das Jahr bekannt ist, kannst du ja als TINYINT(1) speichern.

    Gruß Kyôya Stefan
     
    Oracle Certified MySQL 5 Professional Developer
    Zend Certified PHP 5.3 Engineer

    Vorträge, Webinare, etc im Mayflower - Blog

Ähnliche Themen

  1. mySQL Geburtstage ermitteln?
    Von wachteldonk im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 06.06.11, 23:17
  2. Antworten: 2
    Letzter Beitrag: 23.04.07, 19:26
  3. Antworten: 1
    Letzter Beitrag: 21.02.06, 18:35
  4. Datum (String) in MySQL-Tabelle (date) speichern
    Von NiciB im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 02.11.05, 18:15
  5. return 0; außerhalb der Funktion
    Von SebastianHL im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 13.09.04, 15:27