Although practicality will depend on the software you're using, my belief is that only biological lineage can be used to directly link people in your data, i.e. links from children-to-parents.
This, in turn, is based on the fact there there is a set number (2, even if not yet known), that their relationship is fixed and not time-dependent, and the relationship can be unambiguously defined.
All other relationships, including step-parents, guardians, adoptive parents, foster parents, or even masters in the context of slave families, can be represented through the use of a role vocabulary. We already see this in census pages, and take for granted roles like: Head, Wife, Step-son, Wet-nurse, or Visitor.
What I'm suggesting is that all these non-biological relationships (including the many forms of marriage) can be represented in the data using roles in relation to some common event (e.g. census, birth, baptism, marriage, etc).
Of course, how your software presents this to you could be a challenge but this answer relates to the data itself, as indicated by the question.
{edited} To put biological lineage on a par with social connections, including adoption/foster relationships, is not right. As said above, the biological links are fixed, whereas a "step family" or "foster family" may only exist over a given interval. One of my own parents was fostered, but broke all ties with that family when they were adopted, and then broke all ties with that family when they married.