Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vNYir-006QdV-12 for pgsql-general@arkaria.postgresql.org; Mon, 24 Nov 2025 15:43:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vNYip-001XTK-3A for pgsql-general@arkaria.postgresql.org; Mon, 24 Nov 2025 15:43:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vNYip-001XTC-1s for pgsql-general@lists.postgresql.org; Mon, 24 Nov 2025 15:43:23 +0000 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vNYin-001FhM-1O for pgsql-general@lists.postgresql.org; Mon, 24 Nov 2025 15:43:23 +0000 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-7b8eff36e3bso6983205b3a.2 for ; Mon, 24 Nov 2025 07:43:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763998999; x=1764603799; darn=lists.postgresql.org; h=to:in-reply-to:cc:references:message-id:date:subject:mime-version :from:content-transfer-encoding:from:to:cc:subject:date:message-id :reply-to; bh=y+Wi36g6A9efRmqk3RQ0JAnHrDpbVV5xnxbhhGw+ypI=; b=E7HzCHJYY2vxrd586BRhURN+Ywsyv2ajDhJLOcTWfxEp3bI1grw1n0iP87QU7HGOIY nbrkmuRUzvrM3ay349bvvZCPEhl1sANRc6SuBnQPVRr/MT4Cy0/l/tgixnBlZYgae+lF CUKN0lkURzg2mJ5X5NNJRdsiwPrmO/zeZXollLlqwa7am/HwtsQw6rOEvtNIQ3unLjfm 3t+rfAG1RcgFIVUkmVVVORyiCu4sYZTASYdNIj5Keor9PvIYS/uj/TkzvbL5tDl5qX15 vOTlWUKI8VFXFSYXRxJk2pTXG4MKn7yUZdOZzTEmYBULh81rknJl82/NZ5+VjEPDJ+H5 mRTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763998999; x=1764603799; h=to:in-reply-to:cc:references:message-id:date:subject:mime-version :from:content-transfer-encoding:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=y+Wi36g6A9efRmqk3RQ0JAnHrDpbVV5xnxbhhGw+ypI=; b=Jlf16x4q0m464Z/jZvjeLFW0iwenjF5mfKwjkN/pJUj1bqy/JsZtD5jfMxL+4ba+uz 1IYYUJZkGacjE3jEDgehse7jjPa1D15jmOHFcSl+hS4ZnDkLu304P0EV3PK1jOyx/R9G nxTNVNI+zeLtO+khvoFZ0f1tJryl6hc/1AtzAAWZs0klPynm9kzB7UQM8tV++DB8Hvkp BKNs5P+NpIJIvJ5RhfW4dyeUpukVQhv/k7ocv+QSQKHWyOZHy9q0qq7PUow0L6/Gxa+3 08kgz2mtvrWgwokp54sepZjb54ujIEPAgFwRQP0Z3IatRbBmlXdhxxL2cT9AQ3cNMNRt vGZw== X-Forwarded-Encrypted: i=1; AJvYcCUtcHfevtqvDDXn0ZTiyDUc5R7V71iMPjREMxFMrwrXPCAhfC7BZ9bPP+6eRxCH2RIP2Qr/YRPCtEcfeS/k@lists.postgresql.org X-Gm-Message-State: AOJu0Yx8iKgFaN4G+4Nfad7r51kWLadhWJ0fNA/QyVIKQqyrSVTK7txr Rkeih5IXXXvZ5owVXk2z6APgf3BBr3N4fzyBKnQ6zvfDzuCKmlMw/xNfvc1isQ== X-Gm-Gg: ASbGnctnwEGsq7AFJRzO/Lv3F38sh6vL1a4KBe4xsCJXLMf75sGXD4pUwyP3QMWy+X1 oTB6jWwTj4Hrj/VR0rQCtTFaLqjI2ypI12LLinHkirLqHxLqVHst5SMLL+98RQH/568CjC7a1pj COQvRVIPzY8nUexp3qX3r3szENH6v7hkT9vTD2lbklGlWbcPBBvvRKevpOAcFIkAsXZ76yNOuey EVw1ELmZ9KZm0CV63A/MKqKXeBn6uCBbLcLzvGbQbpsdrVIMZq7EJsXVtVUAuHwvr5O55TOtDiZ 5Yx8UWaRuzr+E5lCQYe/R2QJQUsJNsCAyC3s9pWQ0oTWgKKr3bOVa5XXKpOw87BRYpuNF6bApdo O7Al8TcRCmX4YPJaqD1b/Z2zGAMz/fUi47tbIJEjjsGwH4OF8icvL9/0zut8g2HLKSXuOvUgmDo AUAjZYX3DfbULjKPe2ysb+E07lUnNvwCalOVqjZCk= X-Google-Smtp-Source: AGHT+IFvE7XCqMrpBmzd9ILhcD1nmXKmoDQ6usLCVRkpSGTjNE+8XMDZIb4IxCXKmU5xjfTT5VXloQ== X-Received: by 2002:a05:7022:f50d:b0:11b:9386:7ed3 with SMTP id a92af1059eb24-11c9d872348mr5865102c88.48.1763998998554; Mon, 24 Nov 2025 07:43:18 -0800 (PST) Received: from smtpclient.apple ([2601:681:4c01:7310:a438:6985:d3ec:8a99]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11c93e6dbc8sm72530954c88.10.2025.11.24.07.43.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 24 Nov 2025 07:43:18 -0800 (PST) Content-Type: multipart/alternative; boundary=Apple-Mail-D508A3E6-C056-4B23-B2CB-F413BEBE3626 Content-Transfer-Encoding: 7bit From: Rob Sargent Mime-Version: 1.0 (1.0) Subject: Re: Schema design: user account deletion vs. keeping family tree data Date: Mon, 24 Nov 2025 08:43:07 -0700 Message-Id: <20E42D70-9BE1-4CD9-B9A4-5E22EC73C791@gmail.com> References: Cc: Christoph Pieper , pgsql-general@lists.postgresql.org In-Reply-To: To: Bernice Southey X-Mailer: iPhone Mail (22G100) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --Apple-Mail-D508A3E6-C056-4B23-B2CB-F413BEBE3626 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > On Nov 24, 2025, at 6:18=E2=80=AFAM, Bernice Southey wrote: >=20 > =EF=BB=BFChristoph Pieper wrote: >> Question: >> =46rom a PostgreSQL point of view (database best practices, data integrit= y, performance and long=E2=80=91term maintainability at millions of rows), w= hich approach would you prefer, or is there a better pattern for this kind o= f =E2=80=9Caccount can be deleted, but genealogy should remain=E2=80=9D use c= ase? >=20 > I can tell you what I'm doing. It solved many design problems, but I > don't claim it's "best practice". I split my table in two. > 1 - columns that I can keep indefinitely > 2 - personal data > That way I just delete the personal data row when I want to remove it. >=20 > Thanks, Bernice >=20 >=20 +1 Names are tricky, messy things.[1] Keep egoMaPa as leans as possible. [1] https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-abou= t-names/ --Apple-Mail-D508A3E6-C056-4B23-B2CB-F413BEBE3626 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable

On Nov 24, 2025, at 6:= 18=E2=80=AFAM, Bernice Southey <bernice.southey@gmail.com> wrote:
<= br>
=EF=BB=BFChristoph Pieper <christoph@fecra.de> wrote:
Question:
=46rom a PostgreSQL point of view (database best practices, data i= ntegrity, performance and long=E2=80=91term maintainability at millions of r= ows), which approach would you prefer, or is there a better pattern for this= kind of =E2=80=9Caccount can be deleted, but genealogy should remain=E2=80=9D= use case?

I can tell you what= I'm doing. It solved many design problems, but I
don't clai= m it's "best practice". I split my table in two.
 &nbs= p; 1 - columns that I can keep indefinitely
 &nbs= p; 2 - personal data
That way I just delete the persona= l data row when I want to remove it.

Thanks= , Bernice


+1
Names are tricky, messy things.[1] Keep egoMaPa as leans a= s possible.

[1] https://www.k= alzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/
= --Apple-Mail-D508A3E6-C056-4B23-B2CB-F413BEBE3626--