Eine Rechnung in der Datenbank speichern

hallo,
habe folgendes sql Ziel, ich möchte gerne folgendes speichern: RE Nummer, Name, Strasse, Ort, RE Datum. UND die Rechnungstabelle mit Pos Artikelname, Pries, Menge, ZW.

Meine erste Tabelle:

CREATE TABLE auftrag
(
sqlpos serial NOT NULL,
erstelldatum character varying(255),
redatum character varying(255),
renummer character varying(255),
nname character varying(255),
zuhaktive character varying(255),
zuhaenden character varying(255),
strasse character varying(255),
plz character varying(255),
ort character varying(255),
CONSTRAINT pk_auftrag PRIMARY KEY (sqlpos)
)
WITH (
OIDS=FALSE
);
ALTER TABLE auftrag
OWNER TO postgres;

CREATE TABLE retabelle
(
sqlpos serial NOT NULL,
pos character varying(255),
code character varying(255),
beschreibung character varying(255),
netto character varying(255),
steuer character varying(255),
brutto character varying(255),
menge character varying(255),
zwieschensumme character varying(255),
CONSTRAINT pk_retabelle PRIMARY KEY (sqlpos)
)
WITH (
OIDS=FALSE
);
ALTER TABLE retabelle
OWNER TO postgres;

Eine SQL Tabelle für die Anschift und eine SQL Tabelle für RE TAbelle.
Die Anschift in die Tebelle zubekommen ist einfach. Eine Anschrift eine Zeile.
Die erste RE hat 3 Artikel sprich 3 Zeilen für die REtabelle, dann kommt die nächste RE. Aber was passiert , wenn ich die RE 1 einen Artikel noch hinzufüge?

Es habe gelesen, dass ich die eineTabelle mit der mit der anderen verknüpfen kann, aber ich komme nicht dahinter.

Es gibt mehr Datentypen als nur varchar, für ein Datum z.B. DATE und für beträge numeric. 2 Tabellen verbindet man via JOIN.

test=# create table rech_kopf (id int primary key, datum date, name text);
CREATE TABLE
test=*# create table rech_pos (id int primary key, rech_kopf int references rech_kopf, pos int, betrag numeric);
CREATE TABLE
test=*# insert into rech_kopf values (1, current_date, 'test1 rechnungskopf');
INSERT 0 1
test=*# insert into rech_pos values (1, 1, 1, 10);
INSERT 0 1
test=*# insert into rech_pos values (2, 1, 2, 20);
INSERT 0 1
test=*# select * from rech_kopf rk left join rech_pos rp on rk.id=rp.rech_kopf;
 id |   datum    |        name         | id | rech_kopf | pos | betrag
----+------------+---------------------+----+-----------+-----+--------
  1 | 2016-03-28 | test1 rechnungskopf |  1 |         1 |   1 |     10
  1 | 2016-03-28 | test1 rechnungskopf |  2 |         1 |   2 |     20
(2 rows)

Prinzip nun klarer?

Ok, hier gibt es noch etwas Arbeit. Zum einen die Datentypen, wie akretschmer schon erklärt hat.
Als nächstes solltest du deine Daten im Sinne der Normalisierung etwas trennen. z.B. eine Tabelle mit den Kundendaten, eine mit Rechnungsdaten, eine mit Artikeldaten und eine mit Rechnung-Artikel-liste. Was du hier mit Verknüpfung meinst sind wahrscheinlich Foreign-Keys.
So würde z.B. die Rechnungstabelle eine FK_kunde_id oder sowas haben, welche auf die Kundendaten verweist. In der Rechnung-Artikel-Tabelle gibt es entsprechend nur die FK_rechnung und FK_artikel_ids. Dann hast au du auch kein Problem, wenn eine Rechnung angepasst wird, da die Daten ausgelagert sind, musst du nur die Listentabelle anpassen, und nicht die Rechnungstabelle. Durch die Foreign-Keys büßt du zwar ab einer gewissen Datenmenge Performance beim einfügen von neuen Daten ein, aber hier ist halt die Frage, wie viele tausend Operationen hier drüber laufen.

TL;DR: Hier solltest du dich vielleicht nochmal mit etwas Zeit mit jemandem zusammensetzen, der dir bei der Planung deiner Datenbank hilft.