https://dsf.berkeley.edu/cs262/unix.pdf section 3.2 ends with:

Each directory always has at least two entries. The
name "." in each directory refers to the directory itself. Thus a
program may read the current directory under the name “.”
without knowing its complete path name. The name “..” by
convention refers to the parent of the directory in which it
appears, that is, to the directory in which it was created.
The directory structure is constrained to have the form
of a rooted tree. Except for the special entries “.” and “..”,
each directory must appear as an entry in exactly one other,
which is its parent. The reason for this is to simplify the
writing of programs which visit subtrees of the directory
structure, and more important, to avoid the separation of
portions of the hierarchy. If arbitrary links to directories
were permitted, it would be quite difficult to detect when
the last connection from the root to a directory was severed